我无法获得在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"];
});
}
}