4

わかりました、これは本当に私を悩ませています。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 要素の属性に反映されない場合でも (私は を使用しているため、そうすべきではありません'@')?

4

1 に答える 1