编辑:angular.extend
和Object.assign
两者都正常,我应该使用哪一个
我正在尝试向angularjs服务变量添加更多值,但它会覆盖以前的值。这是一个示例代码
var testModule = angular.module('testmodule', [])
.controller('abc', function ($scope, mser)
{
mser.aa = {a:5, b:2};
mser.aa = {c:5, d:2};
$scope.inps = mser.aa.a
})
.service('mser', function() {
var aa = {}
return aa
});
现在您知道mser.aa = {c:5, d:2};
之后我将mser.aa.a
作为undefined
。
如何避免这种情况并插入所有值
答案 0 :(得分:1)
您可以按如下方式使用angulr.extend:
mser.aa = {a:5, b:2};
angular.extend(mser.aa, {c:6, d:7});
这将使用指定值扩展当前对象而不覆盖。
答案 1 :(得分:1)
你用{c:5,d:2}覆盖“mser.aa”的值。如果要扩展该对象:
mser.aa = Object.assign(mser.aa, {c:5, d:2});
如果您想利用angular
方法而不是纯粹的javascript Object
方法,您也可以这样做:
angular.extend(mser.aa, {c:6, d:7});
答案 2 :(得分:0)
而不是分配第二次尝试
angular.merge(mser.aa,{c:5,d:2})
答案 3 :(得分:0)
你可以让你的控制器像这样..
.controller('abc', function ($scope, mser)
{
mser.aa = {a:5, b:2};
mser.aa.c =5;
mser.aa.d =2;
$scope.inps = mser.aa.a
})
答案 4 :(得分:0)
mser.aa
是一个常规JavaScript属性 - 如果您将一个对象分配给该属性,它将覆盖现有属性。
您要做的是修改现有对象。
就像这样:
mser.aa.a = 5;
mser.aa.b = 2;
mser.aa.c = 5;
mser.aa.d = 2;