首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AngularJS:范围内未更新的变量

AngularJS:范围内未更新的变量
EN

Stack Overflow用户
提问于 2015-06-11 09:04:07
回答 1查看 92关注 0票数 0

我使用的代码非常相似,我多次使用过,但由于某种原因,我的一个变量决定不更新作用域,我也不知道为什么。

在这里,您可以看到我绑定到一个变量'UserGroupsSelectedToBeMoved‘

代码语言:javascript
运行
复制
<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。

如果我写信,

代码语言:javascript
运行
复制
{{UserGroupsSelectedToBeMoved}}

在我的html中,当我单击时,我可以看到值的变化。如果我在控制器中设置了变量的值,那么它将正确地显示在html中,并在页面加载时立即显示出来。但是当用户单击时,它不会在范围内更新,尽管我可以在html中看到它的更新。我搞不懂为什么会发生这种事。

编辑

通过改变我的选择就能解决这个问题,

代码语言:javascript
运行
复制
<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>

在我的控制器里有这种方法,

代码语言:javascript
运行
复制
$scope.ChangeSelectedValueToMove = function (selectedIds) {
    $scope.UserGroupsSelectedToBeMoved = selectedIds;
}

考虑到我发布的原始代码在我的项目其他地方似乎运行良好,这是一种可怕的循环方式,但现在起作用了。

EN

回答 1

Stack Overflow用户

发布于 2015-06-11 09:09:25

你应该读理解Scopes

我强烈建议你这么做。发生在您身上的可能是将直接绑定到基本变量(string、int等)的范围问题。

因此,总是将这些放在对象下,这样就有了ng-model="MyContainer.MyParameter"结构的最佳实践。

因此,基本上,将其改为使用此实践,并阅读本文:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30776248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档