我正在使用Angular创建一个Web应用程序规划器,我在<select>
框中遇到一些困难,该框没有根据ng-model
表示的变量更改值。
我的架构如下:
我正在使用ui-router
,它为我提供了不同的视图状态,一个用于我的规划器的每个页面。根HTML页面有一个名为MainController
的Controller。这是我设置我想在整个计划程序中使用的JSON模型$scope.Master = {}
的地方。规划器的所有页面都应继承此模型并继续修改/添加它。
然后我有4页的计划员:
Start -> Accounts -> Settings -> Review
每个页面都有自己的Controller,每次访问页面时都会实例化。在Start
页面上,我有一个<select>
框,其中ng-model="$scope.Master.Start.selectedAccount"
使用StartController
动态填充(因此每次进入“开始”页面时都会填充)
此<select>
第一次在页面上效果很好,但是如果我转到Accounts
然后返回,则选择框将恢复为默认值,&#34;请选择帐户&#34;,而不是绑定到$scope.Master.Start.selectedAccount
框的<select>
模型中的所选帐户
我认为我可以做一些像$scope.$apply
之类的东西,以便将绑定重新应用到DOM对象,但这只是给了我一个错误,说它已经在消化了。
如何在页面加载2次或更多次后将绑定应用于<select>
框?
答案 0 :(得分:0)
这可能是因为每次回到原始页面时,都会实例化一个新的控制器,因为它在您最初离开时已从DOM中删除。因此$scope.Master.Start.selectedAccount
。要保存此功能,您可以
使用主应用上的服务/工厂单例来保存此值 https://docs.angularjs.org/guide/services# <!/ p>
将$scope.Master.Start.selectedAccount
保存为全局变量
https://docs.angularjs.org/api/ng/service/ $ rootScope
将该控制器放在外面
答案 1 :(得分:0)
我很抱歉......我意识到我正在填充<select
&gt;使用ng-repeat
代替ng-options
不知道我是如何管理的...这就是问题