2016-12-27 47 views
0

編輯:angular.extendObject.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.aundefined。 我怎樣才能避免和插入

回答

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}); 
+0

我應該使用angular.extend還是Object.assign?我正在開發一個離子應用程序 – sam

+0

兩者都是相同的,即將自己的可枚舉屬性從src對象複製到目標。你可以使用任何一個,但是如果你在src對象中有嵌套對象並且想要深度複製,可以使用'angular.merge'。 'assign'僅複製頂級關鍵引用而不復制深度副本。 – superUser

0

而不是指定第二時間的所有值嘗試

angular.merge(mser.aa,{C:5,d:2})

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 
}) 
1

您可以使用angulr.extend如下:

mser.aa = {a:5, b:2}; 
angular.extend(mser.aa, {c:6, d:7}); 

這將擴展當前對象的指定值不覆蓋。

+0

我應該使用angular.extend還是Object.assign?我正在開發一種離子應用 – sam

+0

如果你想以角度的方式做到這一點,去這個。 – SaiUnique

0

mser.aa是有規律的JavaScript屬性 - 如果您將對象分配給屬性,它將覆蓋現有屬性。 你想要做的是修改現有的對象。 就像這樣:

mser.aa.a = 5; 
mser.aa.b = 2; 
mser.aa.c = 5; 
mser.aa.d = 2;