AngularJS指令中的两种方式数据绑定



我无法获得在AngularJS指令中工作的两种数据绑定方式。

这是我来自模板的 html 代码,与实例化 mymodel 的基本控制器一起使用(此处为数组):

.HTML

<select ng-if="mymodel" multipleselect values="mymodel">

命令

我有一个名为多选的指令:

return {
  restrict: 'A',
  scope : {
    values : '='
  },
  link : function($scope, element, attrs){
    ...
    $scope.values = ["some","nice","datas"]; //Actually works, the model is changed in the controller 
    $("select").change(function(){ //This is a callback, asynchronous situation
        $scope.$apply(function () { //Using apply to notify the controller that we are changing its model
          $scope.values = ["some","amazing","datas"]; //Not working :(
        });
    });
   }
}

为什么我的模型在第二次更改时没有更新?

查看给出的答案,我认为这将满足您的需求,而无需使用自定义指令:

<select ng-if="mymodel" multiple ng-model="model.mymodel">

当选择发生变化时,您的模型将自动更新,如下所示。

egghead.io 视频"The Dot"有一个非常好的概述,这个非常流行的堆栈溢出问题也是如此:AngularJS中范围原型/原型继承的细微差别是什么?

你不需要使用 jQuery 来监视变化。你可以这样写(也可以解决你的问题):

return {
  restrict: 'A',
  scope : {
    values : '='
  },
  link : function($scope, element, attrs){
    $scope.values = ["some","nice","datas"];
    element.on("change", function(){
         $scope.values = ["some","amazing","datas"];
    });
   }
}

最新更新