ng-attr 绑定到模型的 Angular 指令 [英] Angular directive with ng-attr bound to model

查看:28
本文介绍了ng-attr 绑定到模型的 Angular 指令的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

plunker 中的所有代码和预览

我想将一个属性双重绑定到指令范围并从外部更改该属性它改变了指令内部的一些东西.

<div class="btn-group"><button type="button" class="btn btn-primary" ng-model="pane.a" btn-checkbox>A</button><button type="button" class="btn btn-primary" ng-model="pane.b" btn-checkbox>B</button><button type="button" class="btn btn-primary" ng-model="pane.c" btn-checkbox>C</button><button type="button" class="btn btn-primary" ng-model="pane.d" btn-checkbox>D</button>

可见:{{pane.a}} {{pane.b}} {{pane.c}} {{pane.d}}<窗格容器><pane ng-attr-hidden="{{pane.a}}">A</pane><pane>B</pane><窗格>C</窗格><窗格>D</窗格></窗格容器>

这里的错误是:

错误:[$parse:syntax] 语法错误:标记 'pane.a' 是意外的,期望 [:] 位于表达式 [{{pane.a}}] 的第 3 列,从 [pane.a] 开始.一种}}].

如果不在属性中使用表达式,则一切正常:

 <pane ng-attr-hidden="{{pane.a}}">A</pane>

此示例按预期工作:在 plunker 中预览

解决方案

我假设 ng-attr-hidden 需要一个角度表达式,但您给它一个对象定义.
尝试删除 {{}}

<pane ng-attr-hidden="pane.a">A</pane>

All code and preview in plunker

I want to double-bind an attribute to directive scope and changing that attribute from outside it changes something inside the directive.

<body ng-app="paneApp" ng-controller="AppCtrl">

  <div class="btn-group">
    <button type="button" class="btn btn-primary" ng-model="pane.a" btn-checkbox>A</button>
    <button type="button" class="btn btn-primary" ng-model="pane.b" btn-checkbox>B</button>
    <button type="button" class="btn btn-primary" ng-model="pane.c" btn-checkbox>C</button>
    <button type="button" class="btn btn-primary" ng-model="pane.d" btn-checkbox>D</button>
  </div> 

  Visible: {{pane.a}} {{pane.b}} {{pane.c}} {{pane.d}}

  <pane-container>
    <pane ng-attr-hidden="{{pane.a}}">A</pane>
    <pane>B</pane> 
    <pane>C</pane>
    <pane>D</pane>
  </pane-container>
</body>

The error here is:

Error: [$parse:syntax] Syntax Error: Token 'pane.a' is unexpected, expecting [:] at column 3 of the expression [{{pane.a}}] starting at [pane.a}}].

If not using an expression inside the attirbute, all works as expected:

        <pane ng-attr-hidden="{{pane.a}}">A</pane>

Edit:

This example is working as expected: preview in plunker

解决方案

I'm assuming ng-attr-hidden expects an angular expression, but you're giving it an object definition.
Try removing the {{}}

<pane ng-attr-hidden="pane.a">A</pane>

这篇关于ng-attr 绑定到模型的 Angular 指令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆