わかりました、これは本当に私を悩ませています。controllerAs
構文 andを使用して、isolate スコープを持つディレクティブがあり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
。
の値は、予想どおり HTML 要素vm.bar
の属性値と同じです。bar
フィルターを使用して値を変更しようとしてvm.bar
も、変更が持続しません。
のフィルタリングされvm.bar
た値を新しい変数に保存するvm.baz
と、期待どおりに機能します。
したがって、私の質問には2つの部分があります。
A)vm.foo
を使用すると、値が undefined になるのはなぜ'='
ですか?
B) コントローラーのスコープ内で の値を変更できないのはなぜですか?vm.bar
その変更が HTML 要素の属性に反映されない場合でも (私は を使用しているため、そうすべきではありません'@'
)?