我已将我的产品从Angular 1.2.x更新为1.4.x 。
将angularjs更新为1.4.x后;我在这里面临问题
我有什么: 我添加了角度为1.2.0的片段,这里是JSFIDDLE,1.4.8,代码相同。
解释:
从多选框中选择任意一个用户,将其设为有效。 选择第二个用户(使用ctrl键)。
观察: 1.2.x:第一个选定的值仍然有效(true) 1.4.x:选择第二个值后,第一个值有效标志被重置。
为什么会这样? 我该怎么做才能获得1.4.x中的现有(1.2.x)输出
注意:我的英文写作不太好。请避免语法错误或纠正它:)
谢谢!
var app = angular.module('test',[]);
app.controller('selectIssue',function($scope){
$scope.users = [{
name:"Rohit",
active:false
},
{
name:"Virat",
active:false
},
{
name:"Viky",
active:false
}];
$scope.selectedName = [];
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script>
<div ng-app="test">
<div ng-controller="selectIssue">
<div>
<select multiple ng-model="selectedName" ng-options="user.name for user in users track by user.name"></select>
</div>
Selected value table :
<div>
<table border="1">
<tr>
<td>Name</td>
<td>isActive</td>
<td>Output</td>
</tr>
<tr ng-repeat="n in selectedName">
<td>{{n.name}}</td>
<td><input type="checkbox" ng-model="n.active"></td>
<td>{{n}}</td>
</tr>
</table>
</div>
</div>
</div>
答案 0 :(得分:0)
更改复选框时,您没有更新$ scope.names,而是$ scope.selectedNames。 这意味着您必须在复选框上使用ng-change来更新$ scope.names。
$scope.updateName = function(name) {
angular.forEach($scope.names, function(n) {
if (n.name === name.name) {
n.active = name.active
}
})
}
这是更新的fiddle