javascript-AngularJS对象应独立工作
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-AngularJS对象应独立工作,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2089字,纯文字阅读大概需要3分钟。
内容图文
我有两个都用$http响应初始化的数组对象,但是当我尝试在一个数组中添加(push)时,它将被添加到两个数组中.
我尝试下面的代码:
控制器:
myApp.controller("abc", function($scope, lastday_data){
$scope.objectiveData = [];
$scope.doneData = [];
// call service & get data from server
lastday_data.getData().then(function(success){
$scope.objectiveData = success;
$scope.doneData = success;
$scope.$digest(); // *---> $digest() used*
},function(error){
$scope.objectiveData = null;
$scope.doneData = null;
});
// add task done
$scope.addTaskDone = function() {
var p = {"id": 101, "name": "testadd", "check": true};
$scope.doneData.push(p);
$scope.textDone = "";
}
});
服务:-从服务器获取数据
myApp.service("lastday_data", function($http){
this.getData = function() {
return new Promise(function(resolve, reject){
$http({
method: 'GET',
url: 'http://localhost/task/index.php/v1/example/users'
}).then(function (response) {
if(response.status)
resolve(response.data);
else
reject();
},function (error) {
reject();
});
});
}
});
问题:当我尝试调用控制器的addTaskDone()方法时,该方法在doneData数组中添加了一个对象,但是该对象也被添加到了objectData中.
解决方法:
问题
$scope.objectiveData和$scope.doneData都引用相同的变量成功,因此,如果您更改一个变量,那么另一个也将更改.
解
通过获取成功的独立副本,使$scope.objectiveData和$scope.doneData引用独立变量.你可以用这个
纯JavaScript
> Array.prototype.slice:$scope.doneData = success.slice();
> Array.prototype.concat:$scope.doneData = [] .concat(成功);
> Array.from:$scope.doneData = Array.from(成功);
> Object.assign:$scope.doneData = Object.assign([],成功);
AngularJS内置函数
> angular.copy:$scope.doneData = angular.copy(成功);
> angular.extend:$scope.doneData = angular.extend([],成功);
> angular.merge(自1.6.5起不推荐使用,请参见known issues):$scope.doneData = angular.merge([],成功);
其他技巧
> JSON.parse/JSON.stringify [1]:
$scope.doneData = JSON.parse(JSON.stringify(成功));
所以代替
$scope.objectiveData = success;
$scope.doneData = success;
做(或任何其他先前的替代方法)
$scope.objectiveData = success.slice(); // get a copy of success
$scope.doneData = success.slice(); // get a copy of success
内容总结
以上是互联网集市为您收集整理的javascript-AngularJS对象应独立工作全部内容,希望文章能够帮你解决javascript-AngularJS对象应独立工作所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。