一次创建单个项目的项目列表

时间:2017-01-07 06:51:17

标签: angularjs object-initialization

Angular task 1.5.x:

我有这样的对象:

{
    id: 1,
    name: "a",
    items: [
        {"holiday": "false", "day": "monday"}, 
        {"holiday": "true", "day": "tuesday"...}
    ]
}

我希望通过单击按钮以上述方式创建新对象。注意我不想一次单独添加每个项目。意味着,对于名称为" a"的单个对象,我想一次性添加所有日期的所有项目。

我可以让它发挥作用,但我想知道正确的方法。

最终我们应该能够以上述格式创建一个javascript对象(没有id)(我认为这种格式是正确的)并将其发送到服务器以便它可以工作。但是如何添加html / angular代码,这样我就能得到一个对象。

如需了解更多信息,请与我们联系。

2 个答案:

答案 0 :(得分:1)

你可以这样做:

在视图中创建一个按钮,并使用ng-click指令捕获点击事件。

<强> HTML

<button ng-click="createCopy()"></button>

使用angular.copy创建源对象的深层副本。

angular.copy这就像文档中所解释的那样:

  

创建源的深层副本,该副本应该是对象或数组。

     

如果未提供目标,则为对象或阵列的副本   创建。如果提供目的地,其所有元素(for   数组)或属性(对象)被删除,然后全部删除   源中的元素/属性将复制到它。如果来源不是   一个对象或数组(包括null和undefined),返回source。如果   source与目标相同,将抛出异常。

<强>控制器:

$scope.mainObject = { id: 1, name: "a", items: [{"holiday": "false", "day": "monday"}, {"holiday": "true", "day": "tuesday"...}] };

$scope.createCopy = function (){    
  $scope.copyObject = angular.copy($scope.mainObject);
}

答案 1 :(得分:1)

使用ng-model时,您无需完全定义对象即可构建它。 E.g:

<强>控制器

$scope.object= {
    items: [] 
};

var n = 7;
for (var i = 0; i < n; i++)
    $scope.object.items({});

<强> HTML

<input type="text" ng-model="object.name"/>

<div ng-repeat="currObj in object.items">
    <input type="text" ng-model="currObj.holiday" />
    <input type="text" ng-model="currObj.day" />
</div>

必须事先定义一般结构,但不必初始化所有属性。触发绑定时,它们将接收值(view - &gt; model)。