我尝试构建一个指令,在这个指令中,我想通过单击元素来更改模型。某种复选框。以下是我的代码
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- $watch属性的对象,在父控制器中对这组复选框进行分组。
mainApp.controller('Filter',['$scope', function ($scope) {
$scope.data = {}
$scope.$watchCollection('data', function(newNames, oldNames) {
console.log('changed');
});
}]);当我用scope.model = true;定义属性时,它可以工作,看着它工作,但当我在单击时更改scope.model时,出于某些原因,它不会影响data对象,看起来也不能工作。有人能告诉我为什么吗?
谢谢!
发布于 2017-02-06 01:14:57
在您的指令更改中
scope: {
model: '=?ngModel'
},至
scope: {
model: '=ngModel'
},如上所述,当您将ngModel传递给链接函数时,即当您声明
require:'?ngModel'https://stackoverflow.com/questions/41994084
复制相似问题