隔离范围和绑定的问题

时间:2017-02-02 04:14:46

标签: javascript angularjs angularjs-directive javascript-databinding

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

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属性的对象,在父控制器中查看此复选框的组。

mainApp.controller('Filter',['$scope', function ($scope) {
$scope.data = {}

$scope.$watchCollection('data', function(newNames, oldNames) {
  console.log('changed');
});

}]);

当我通过scope.model = true;定义属性时,它可以正常工作,但是当我在点击时更改scope.model时出于某些原因它不会影响data对象并观看不会&# 39;工作。 有人可以告诉我为什么吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

在指令中更改

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

  scope: {
        model: '=ngModel'
    },

如上所述,当您将ngModel传递给声明

的链接函数时
 require:'?ngModel'