5

双方向バインディングの分離スコープを持つディレクティブ myDirective があります。ユーザーがボタンをクリックしたときに、Isolate スコープを値に変更したいと考えています。分離スコープは $scope にバインドされていると思っていましたが、間違っています。その分離スコープを「つかんで」操作するにはどうすればよいですか? ディレクティブ コントローラーのスコープにアタッチされていませんか?

angular.module("app", [])
.controller("myCtrl", function($scope){
    $scope.ctrlTwoway = "Eggs";
})
.directive("myDirective", function(){
    return {
        scope: {
          twoway: =
        },
        template: "<button ng-click="changeTwoway()">Change two way isolate scope</button>",
        controller: function($scope, $element, $attrs){
            $scope.changeTwoway = function(){
                // get twoway from isolate scope, and update the value with "bacon"
                // $scope.twoway = "bacon" doesn't work 
                // nor does $attrs.twoway = "bacon" work, either :(
            };
        }
    }
});

そしてHTML

...
<div my-directive twoway="{{ctrlTwoway}}"></div>
Current value: {{ctrlTwoway}}
4

1 に答える 1

10

作業バージョンでプランカーを作成しました。

{{variable}}上に装着する必要はありませんtwoway=""。仕事に着替えるだけtwoway="ctrlTwoway"です。

もう 1 つのことは、バインディングを宣言する方法です。=の代わりに使用してい'='ます。

もう1つのことは、ディレクティブでコントローラー関数の代わりにリンク関数を使用してみてください。DOM 要素を操作する場合は、これが適切な方法であり、適切な方法です。

ソース

お役に立てば幸いです。

于 2013-10-24T14:48:47.157 に答える