我使用的代码非常相似,我多次使用过,但由于某种原因,我的一个变量决定不更新作用域,我也不知道为什么。
在这里,您可以看到我绑定到一个变量'UserGroupsSelectedToBeMoved‘
<select multiple="" class="form-control" size="8" ng-model="UserGroupsSelectedToBeMovedBack">
<option ng-repeat="ChosenUserGroup in Audit.UserGroups" value="{{ChosenUserGroup.Id}}">{{ChosenUserGroup.Name}}</option>
</select>因此,当选择任何内容时,该变量将在作用域中进行更新。很简单..。但它没有更新。除非我在控制器中指定了$scope.UserGroupsSelectedToBeMoved,否则它总是为null。
如果我写信,
{{UserGroupsSelectedToBeMoved}}在我的html中,当我单击时,我可以看到值的变化。如果我在控制器中设置了变量的值,那么它将正确地显示在html中,并在页面加载时立即显示出来。但是当用户单击时,它不会在范围内更新,尽管我可以在html中看到它的更新。我搞不懂为什么会发生这种事。
编辑
通过改变我的选择就能解决这个问题,
<select class="form-control"
size="8"
multiple
ng-model="UserGroupsSelectedToBeMoved"
ng-options="userGroup.Id as userGroup.Name for userGroup in AvailableUserGroups"
ng-change="ChangeSelectedValueToMove(UserGroupsSelectedToBeMoved)"></select>在我的控制器里有这种方法,
$scope.ChangeSelectedValueToMove = function (selectedIds) {
$scope.UserGroupsSelectedToBeMoved = selectedIds;
}考虑到我发布的原始代码在我的项目其他地方似乎运行良好,这是一种可怕的循环方式,但现在起作用了。
发布于 2015-06-11 09:09:25
你应该读理解Scopes。
我强烈建议你这么做。发生在您身上的可能是将直接绑定到基本变量(string、int等)的范围问题。
因此,总是将这些放在对象下,这样就有了ng-model="MyContainer.MyParameter"结构的最佳实践。
因此,基本上,将其改为使用此实践,并阅读本文:)
https://stackoverflow.com/questions/30776248
复制相似问题