对象分配在此angularjs控制器中不起作用
Object assignment does not work in this angularjs controller
在angularjs控制器中,我试图将一个对象分配到$scope.XX对象中。由于某种原因,它无法工作。以下是angularjs控制器内部代码的简化版本。
$scope.XXX = {};
polling_interval_ms = 100;
var poll = function (ChartObj, polling_interval_ms) {
var processedObj = {};
processedObj = processDataChart(data_Chart); //data_Chart is object that contains data that changes in real-time
ChartObj = Object.assign(processedObj);
console.log(ChartObj);
$timeout(function () {
poll(ChartObj, polling_interval_ms)
}, polling_interval_ms);
};
poll($scope.XXX, polling_interval_ms);
console.log($scope.XXX);
奇怪的部分是console.log(ChartObj);
的输出显示数据已分配给对象。但是,console.log($scope.XXX)
的输出为空。我期望$scope.XXX
包含与ChartObj
相同的数据。我做错了什么?
在javascript中,函数中的所有参数都是引用的。因此,当您更改引用时,您不会更改被引用的对象。
在您的情况下,您可以使用不同的方式使用Object.assgin
Object.assign(ChartObj, processedObj);
因为
Object.assign()方法用于将所有可枚举自身属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
或者传递对象XXX的包装器,在这种情况下是$scope
$scope.ChartObj = {};
polling_interval_ms = 100;
var poll = function (wrapper, polling_interval_ms) {
var processedObj = {};
processedObj = processDataChart(data_Chart); //data_Chart is object that contains data that changes in real-time
wrapper.ChartObj = Object.assign(processedObj);
console.log(wrapper.ChartObj);
$timeout(function () {
poll(wrapper, polling_interval_ms)
}, polling_interval_ms);
};
poll($scope, polling_interval_ms);
console.log($scope.ChartObj);
使用
$scope.XXX
而不是ChartObj,因为
您正在为分配价值
ChartObj
和
$scope.XXX
不是引用类型
相关文章:
- Angular JS“;控制器为“;语法不起作用
- 角度控制器服务承诺不起作用
- 控制器功能在 Angular.js 中不起作用
- 简单的AngularJS控制器不起作用
- Angular js指令使用控制器作为语法ng点击不起作用
- 控制器中的筛选列表没有'不起作用
- 对象分配在此angularjs控制器中不起作用
- 离子:$ionicPlatform.isIOS()在控制器方法中不起作用
- 离子控制器XMLHttpRequest函数不起作用
- PhoneGap:角度控制器不起作用
- Ember.js 控制器不起作用
- 通过控制器访问$rootScope不起作用
- 角度“这个”在指令控制器内不起作用
- 为什么当服务注入第二个控制器时,AngularJS 1.4.8 应用程序不起作用
- AngularJS简单控制器不起作用
- 条件在 AngularJS 控制器中不起作用
- 角度滤波器 - 带控制器作为语法不起作用
- Angular的ngResource对控制器不起作用
- Ajax 发布到 CodeIgniter 控制器不起作用
- $emit from子控制器工作,但是$broadcast from父控制器不起作用