0

我尝试构建指令,在该指令中我想在按元素单击时更改模型。某种复选框......这是我的代码

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对象并且观看不起作用。有人能告诉我为什么吗?
谢谢!

4

1 回答 1

0

在您的指令更改中

 scope: {
        model: '=?ngModel'
    },

  scope: {
        model: '=ngModel'
    },

如上所述,当您将 ngModel 传递给链接函数时,即声明

 require:'?ngModel'
于 2017-02-05T17:14:56.753 回答