我无法获得在AngularJS指令中工作的两种数据绑定方式。AngularJS指令中的数据绑定的两种方式
下面是从模板我的HTML代码,一个基本的控制器实例为MyModel(这里的数组)使用:
HTML
<select ng-if="mymodel" multipleselect values="mymodel">
DIRECTIVE
我有一个指令称为multipleselect:
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 :(
});
});
}
}
为什么我的模型没有更新第二个tim我改变它了吗?
你在哪里定义'mymodel'财产?由于您在指令中使用了双向绑定,因此应该在'multipleselect'指令的封闭/父元素范围内定义'mymodel'属性。 – Arkantos
我过去用'ng-if'和类似的东西出现了问题,它会从DOM中删除实际的元素并将其替换。不知道它是否可能是一个类似的问题。也只是为了让您知道您的更改会针对页面上的每个选项启动。您应该使用元素对象来将您的事件范围限定为指令。你也应该听取销毁事件,以便在“ng-if”中删除处理程序时移除该处理程序。可能导致内存泄漏。 – ste2425