好吧,这真的让我很烦。我有一个具有隔离范围的指令,使用controllerAs
语法和bindToController
:
function exampleDirectiveFactory() {
var bindings = {
foo: '=',
bar: '@'
}
return {
bindToController: true,
controller : 'ExampleController',
controllerAs : 'vm',
scope : bindings,
template : 'foo = {{ vm.foo }}<br />bar = {{ vm.bar }}'
};
}
假设这样的用法:
<example foo="FOO" bar="BAR"></example>
...我希望 的值vm.foo
双向绑定到foo
属性的值。相反,它是undefined
.
的值vm.bar
等于bar
我期望的 HTML 元素的属性值。
当我尝试更改vm.bar
使用过滤器的值时,没有任何更改持续存在。
当我将过滤后的值存储vm.bar
到一个新变量时vm.baz
,它会按预期工作。
所以我的问题有两个部分:
A) 为什么vm.foo
使用时 undefined的值'='
?
B)为什么我不能更改vm.bar
控制器范围内的值,即使该更改不会传播到 HTML 元素属性(它不应该传播,因为我正在使用'@'
)?