【发布时间】:2017-02-02 04:14:45
【问题描述】:
我尝试构建指令,在该指令中我想在按元素单击时更改模型。某种复选框... 这是我的代码
mainApp.directive('subCategory', function(){
return{
restrict: 'A',
scope: {
model: '=?ngModel'
},
link : function(scope, element){
scope.model = true;
element.click(function () {
if (element.hasClass('active')) {
element.removeClass('active');
scope.model = false;
} else {
element.addClass('active');
scope.model = true;
}
});
}
}
});
我尝试通过观察包含所有复选框的 ng-model 属性的对象来 $watch 父控制器中的此复选框组。
mainApp.controller('Filter',['$scope', function ($scope) {
$scope.data = {}
$scope.$watchCollection('data', function(newNames, oldNames) {
console.log('changed');
});
}]);
当我通过scope.model = true; 定义属性时,它可以工作并且观看工作,但是当我在某些原因上单击更改scope.model 时,它不会影响data 对象并且观看不起作用。
谁能告诉我为什么?
谢谢!
【问题讨论】:
-
使用
ng-model作为属性实例化ngModelController。该控制器可能正在与自定义指令作斗争。ng-前缀的使用保留给核心指令。有关详细信息,请参阅AngularJS Wiki - Best Practices。 -
谢谢@georgeawg!你是对的!
标签: javascript angularjs angularjs-directive javascript-databinding