2013-10-24 18 views
5

私はディレクティブmyDirectiveを持っています。これは双方向バインディング分離スコープです。ユーザーがボタンをクリックすると、分離スコープを値に変更します。私は分離スコープが$スコープに束縛されていると思ったが、私は間違っている。どのようにしてスコープを隔離して対話するのですか?それらは指令コントローラのスコープに接続されていませんか?ディレクティブコントローラ内でスコープ変数を分離する方法は?

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 :(
      }; 
     } 
    } 
}); 

そして、私はworking versionとplunkerを作成したHTML

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

'controller:'は 'link:'ではありませんか? – tymeJV

+0

"twoway:="にはタイプミスがあります。 "twoway: '='" – TrtG

答えて

10

{{variable}}twoway=""に載せる必要はありません。機能するにはtwoway="ctrlTwoway"に変更してください。

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

別のことは、指示文でコントローラ機能の代わりにリンク機能を使用することです。 DOM要素を操作したい場合は、適切な方法で適切な場所です。

Source

私はそれが役に立てば幸い。

+0

これは答えです!ありがとう –

関連する問題