在角度服务中添加更多参数

时间:2016-12-27 11:26:21

标签: javascript angularjs cordova ionic-framework

编辑: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.a作为undefined。 如何避免这种情况并插入所有值

5 个答案:

答案 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;
相关问题