지시어에서 컨트롤러 범위를 업데이트하는 데 문제가 있습니다. 아래는 무슨 일이 일어나고 있는지의 기초입니다.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>
결과는 위의 항상 내 컨트롤러에 설정하고, test
으로 업데이트되지 않습니다 something
입니다.
나는 내 컨트롤러에 $watch
을 시도하지만, 업데이트, 그래서 난 그냥
지침은 당신이 표시 한대로'scope' 속성을 사용하여 만드는 경우 범위를 분리해야합니다. 그렇지 않으면 prototypal 상속을 통해 부모 범위를 상속합니다. – Lex
좋은 지적. OP의 코드에서 빠뜨린 것, 즉 scope. $ apply 함수가 필요한 jQuery 이벤트 함수에서 스코프를 변경하려고한다는 것을 알았습니다. –