コントローラのスコープをディレクティブから更新する際に問題が発生しています。以下は、何が起こっているのかの基本です。mousedownのディレクティブからスコープを更新するAngularjs
myApp.directive('myDirective', ['$document', function($document) {
return {
link: function(scope, element, attr, controller) {
angular.element(element).bind('mousedown', function(event){
scope.name = 'test';
});
}
}
}
myApp.controller('myController', ['$scope', function($scope){
$scope.name = 'something';
}]);
HTML:
<p>{{name}}</p>
<p my-directive>Click me</p>
上記の結果は私のコントローラで設定されたことを常にsomething
あり、そしてtest
に更新されることはありません。
私は私のコントローラで$watch
を試してみましたが、それはアップデートは、だから、僕は
ディレクティブだけが示されているようあなたが 'scope'プロパティを使用して、それを作成する場合はスコープを隔離持っています。それ以外の場合は、プロトタイプ継承を介して親スコープを継承します。 – Lex
良い点。 OPのコードで逃したことに気付きました。つまり、スコープを 'scope $ apply'関数を必要とするjQueryイベント関数から変更しようとしていました。 –