Angular task 1.5.x:
我有这样的对象:
{
id: 1,
name: "a",
items: [
{"holiday": "false", "day": "monday"},
{"holiday": "true", "day": "tuesday"...}
]
}
我希望通过单击按钮以上述方式创建新对象。注意我不想一次单独添加每个项目。意味着,对于名称为" a"的单个对象,我想一次性添加所有日期的所有项目。
我可以让它发挥作用,但我想知道正确的方法。
最终我们应该能够以上述格式创建一个javascript对象(没有id)(我认为这种格式是正确的)并将其发送到服务器以便它可以工作。但是如何添加html / angular代码,这样我就能得到一个对象。
如需了解更多信息,请与我们联系。
答案 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)。