AngularJS:ng-model未应用于Controller实例化

时间:2014-08-08 22:54:23

标签: angularjs

我正在使用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>框?

2 个答案:

答案 0 :(得分:0)

这可能是因为每次回到原始页面时,都会实例化一个新的控制器,因为它在您最初离开时已从DOM中删除。因此$scope.Master.Start.selectedAccount。要保存此功能,您可以

  1. 使用主应用上的服务/工厂单例来保存此值 https://docs.angularjs.org/guide/services# <!/ p>

  2. $scope.Master.Start.selectedAccount保存为全局变量 https://docs.angularjs.org/api/ng/service/ $ rootScope

  3. 将该控制器放在外面

答案 1 :(得分:0)

我很抱歉......我意识到我正在填充<select&gt;使用ng-repeat代替ng-options不知道我是如何管理的...这就是问题