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