多视图未更新Angular JS中的变量
Multiple view not updating variable in Angular JS
我使用Angular JS中的一个工厂,使用路由器ui在两个控制器/子视图之间共享数据。
工厂:
app.factory('SharedData', function() {
return {data: {}};
})
作业控制器:
app.controller("JobsController", function($scope, $http, $resource, $location, $stateParams, JobsService, $state, SharedData) {
SharedData.data = JobsService.query();
$scope.data = SharedData.data;
});
导航控制器:
app.controller("navController", function($scope, $state, SharedData) {
$scope.data = SharedData.data;
});
jobs.html
{{data.jobs.length}} // this updates fine
nav.html
{{data.jobs.length}} // this does not update
相反,我必须这样做:
导航控制器:
app.controller("navController", function($scope, $state, SharedData) {
$scope.data = SharedData;
});
jobs.html
{{data.jobs.length}} // this works fine
nav.html
{{data.data.jobs.length}} // this now works but not sure why the extra 'data' is needed?
很明显,我在这里做错了什么,但尽管我在谷歌上搜索了好几个小时,我还是想不出是什么。。。有人能帮忙吗?
这个怪癖与分配顺序有关。
初始化SharedData
时,它是一个具有单个属性data
的对象,该属性为空对象。
当navController
被初始化时,它的$scope.data
被设置为等于空对象SharedData.data
。
初始化jobsController
时,它用一个完全不同的对象替换SharedData.data
在此之后,$scope.data
被设置为等于此新对象,但navController
仍然指向原始空对象。
在第二个示例中,navController
并没有指向即将被替换的对象。相反,它指向SharedData
对象本身,因此$scope.data.data
将始终解析SharedData
上当前存在的任何对象。
相关文章:
- 等待函数完成,然后将返回值分配给变量JS
- 节点中的变量.js JavaScript 不会改变
- 如何在 Node 中访问模块全局变量.js例如浏览器中的 window.variable
- 在角度中使用父范围变量.js
- 在重新声明变量 (JS) 时遇到了问题
- 在主干中使用全局变量.js .最佳实践
- 在节点中使用变量.js mysql-node 查询
- 如果变量 JS 太高,则启动/停止反转
- 变量 Js 在 PHP 代码中不起作用
- 无法使用车把正确在我的“模板”中显示变量.js
- 引导程序中的全局变量.js在 Firefox for Android 扩展中
- Webstorm 中的“未解析变量 JS”
- 变量JS的子字符串值
- 动态更新变量JS
- 不能用一个主变量访问单个变量[jS]
- 创建全局变量js
- 当不同的函数需要从数据库调用数据时,如何避免使用全局变量.(JS)
- 变量JS中的变量
- 本地存储变量js
- 为循环追加变量js