Javascript 对象分配在此angularjs控制器中不起作用
在angularjs控制器中,我尝试将一个对象分配到$scope.XX对象中。由于某种原因,它无法工作。下面是angularjs控制器内部代码的简化版本Javascript 对象分配在此angularjs控制器中不起作用,javascript,angularjs,javascript-objects,Javascript,Angularjs,Javascript Objects,在angularjs控制器中,我尝试将一个对象分配到$scope.XX对象中。由于某种原因,它无法工作。下面是angularjs控制器内部代码的简化版本 $scope.XXX = {}; polling_interval_ms = 100; var poll = function (ChartObj, polling_interval_ms) { var processedObj = {}; processedObj
$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
相同的数据。我做错了什么?使用
$scope.XXX
而不是ChartObj,因为
您正在为分配值
ChartObj
及
不是引用类型使用
$scope.XXX
而不是ChartObj,因为
您正在为分配值
ChartObj
及
不是javascript中的引用类型,函数中的所有参数都是引用。因此,当您更改引用时,您不会更改引用的对象
在你的情况下,你可以用不同的方式
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);
在javascript中,函数中的所有参数都是引用。因此,当您更改引用时,您不会更改引用的对象
在你的情况下,你可以用不同的方式
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);
精彩的。我希望我能给你更多的分数。精彩的!!!我花了几个小时,而你花了几分钟。你真是个天才@用户16891328,在阅读函数的文档时请更加注意:-)太好了。我希望我能给你更多的分数。精彩的!!!我花了几个小时,而你花了几分钟。你真是个天才@用户16891328,请在阅读函数的文档时更加注意:-)