AngularJS:来自另一个属性的Access指令的属性

时间:2014-01-21 10:31:37

标签: angularjs angularjs-directive

我已经定义了一个自定义复选框指令,我想从另一个属性中访问一个属性。

请注意以下示例中的disabledng-class属性:

<checkbox ng-model="isChecked" 
          disabled="<some angular expression>" 
          ng-class="{'fresh': isChecked && !disabled}"/>

此外,该指令的范围如下所示:

scope: {
    ngModel: "=",
    disabled: "=",
}

这可能吗?

修改

让我的问题更加明确:在this fiddle中,我说明了如何在disabled属性中重用属性ng-class

在小提琴中,这将永远不会起作用,因为disabled属性中的ng-class始终为false(不是禁用复选框的属性(或禁用指令范围内的属性),而是来自当前范围的'禁用'。

1 个答案:

答案 0 :(得分:0)

@surendar在directive中提到表达式评估可以通过ngAttr attribute bindings表示

scope: {
    ngModel: "=",
    disabled: "@"
}

ng-class将使用模型值isChecked

进行评估

修改

看来你想做的事情是不可能的!

disabled="<some angular expression>"

因为disabled是指令的attribute,同时指令的内部元素model

ng-class="{'fresh': isChecked && !disabled}"

此处ng-class期望isCheckeddisabled是模型属性。您可以执行其他操作,例如

ng-class="{'fresh': isChecked && (expression)}" // you can put expression instead of disabled 

否则你需要链接/控制器。