多重选择跟踪行为角度与1.4.x的差异
我已将产品从Angular 1.2.x更新到1.4.x。多重选择跟踪行为角度与1.4.x的差异
将angularjs更新为1.4.x后;在这里,我现在面临的问题
我有什么: 我已经添加代码片段,其中角1.2.0这里是JSFIDDLE与1.4.8具有相同的代码。
说明:
选择从多选框,任何一个用户,将其激活。 选择第二个用户(使用Ctrl键)。
观察: 1.2.x的:首先选择的值仍然有效(真) 的1.4.x:选择第二值的第一值有效标志被重置之后。
为什么会发生这种情况? 我该怎么做才能在1.4.x中获得现有的(1.2.x)输出
注意:我的英文写作不太好。请避免语法错误或纠正它:)
谢谢!
var app = angular.module('test',[]);
app.controller('selectIssue',function($scope){
\t $scope.users = [{
\t name:"Rohit",
active:false
},
{
\t name:"Virat",
active:false
},
{
\t 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>
你没有更新$ 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
这是事实。但为什么它在1.2中仍然困惑我:) – DanteTheSmith
为什么要我更新我的ng选项?我正在更新ng-model(选定的值),如果我已经从列表中删除活动用户,并且在再次添加之后它不活跃,则不是问题。我有关于用户在列表中没有触及他们,并在列表中添加另一个之后;现有的用户都得到重置 – Sachink
@DanteTheSmith在这里同样困惑? – Sachink
“我应该怎么做才能在2.4.x的现有(的2.1.x)输出”等一下,我们采取1.X又名AngularJs或2.X又名角或Angular 2? – DanteTheSmith
您必须对select进行ng更改,然后使用它将值推入模型中。看到这个SO帖子:https://*.com/questions/13473096/angularjs-select-multiple-options-from-object – rrd
@DanteTheSmith更新了这个问题。谢谢! – Sachink