如何添加到angularjs中的现有对象

时间:2015-11-19 12:18:12

标签: javascript angularjs

我正在将表单中的公司名称添加到

CurrentCursorPosition % 10

使用

$scope.master = {};

现在在另一个表单上,所有者详细信息,我只想添加到$scope.master = angular.copy(cmpy); // This gives me result as Object {cname: "Company 2"} 。我已经尝试了$scope.masterpush,但他们似乎无法工作。如果我再次使用concat,它只会覆盖现有数据。

3 个答案:

答案 0 :(得分:2)

如果您使用的是AngularJS版本> = 1.4.0,那么您可以使用extend功能,如下所示:

angular.extend($scope.master, $scope.ownerDetails);

这会将$scope.ownerDetails(或您获得所有者详细信息的任何地方)的所有值复制到$scope.master

对于小于1.4.0的Angular,您可以解决方法以注入自己的extend方法:

// This code is basically copied from AngualrJS 1.4.0 library
function baseExtend(dst, objs, deep) {
    var h = dst.$$hashKey;

    for (var i = 0, ii = objs.length; i < ii; ++i) {
        var obj = objs[i];
        if (!angular.isObject(obj) && !angular.isFunction(obj)) {
            continue;
        }

        var keys = Object.keys(obj);
        for (var j = 0, jj = keys.length; j < jj; j++) {
            var key = keys[j];
            var src = obj[key];

            if (deep && angular.isObject(src)) {
                if (angular.isDate(src)) {
                    dst[key] = new Date(src.valueOf());
                } else {
                    if (!angular.isObject(dst[key])) {
                        dst[key] = angular.isArray(src) ? [] : {};
                    }
                    baseExtend(dst[key], [ src ], true);
                }
            } else {
                dst[key] = src;
            }
        }
    }
    if (h) {
        dst.$$hashKey = h;
    } else {
        delete dst.$$hashKey;
    }
    return dst;
}

angular.merge = function(dst) {
    var slice = [].slice;
    return baseExtend(dst, slice.call(arguments, 1), true);
};

答案 1 :(得分:0)

pushconcat用于数组,$ scope.master是一个对象。要添加另一个密钥:

$scope.master['owner_details'] = owner_details;

答案 2 :(得分:0)

其他答案很好,以编程方式设置主变量,如果这是你想要的(你可能因为你尝试推动等)

然而,如果&#34;形式&#34;你提到的是 HTML表单字段,你可以使用 ngmodel 将用户详细信息绑定到$ scope.master。赞:

<input type="text" ng-model="master.firstname" />

另一种选择。

一切顺利。