Angular task 1.5.x:
我有这样的对象:
{
id: 1,
name: "a",
items: [
{"holiday": "false", "day": "monday"},
{"holiday": "true", "day": "tuesday"...}
]
}
我希望通过单击一个按钮以上述方式创建一个新对象。注意 我不想一次单独添加每个项目。意味着,对于名称为"a"的单个对象,我想一次添加所有日期的所有项目。
我可以让它工作,但我想知道正确的方法。
最终我们应该能够以上述格式(没有id)创建一个JavaScript对象(我认为这种格式是正确的)并将其发送到服务器,以便它工作。但是如何添加html/angle代码,以便我以这种方式获得一个对象。
请让我知道更多信息。
使用 ng-model
时,您不必完全定义对象即可构造它。 例如:
控制器
$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>
必须事先定义常规结构,但不必初始化所有属性。它们将在触发绑定时接收值(视图 -> 模型)。
这样做:
在视图中创建一个按钮,并使用ng-click
指令捕获点击时事件。
目录:
<button ng-click="createCopy()"></button>
使用 angular.copy 创建源对象的深层副本。
这是angular.copy
在文档中解释的作用:
创建源的深层副本,该副本应为对象或数组。
如果未提供目标,则对象或数组的副本为 创建。如果提供了目标,则其所有元素(对于 数组)或属性(对于对象)被删除,然后全部 源中的元素/属性将复制到其中。如果源不是 返回对象或数组(包括 null 和未定义)源。如果 源与目标相同,将引发异常。
控制器:
$scope.mainObject = { id: 1, name: "a", items: [{"holiday": "false", "day": "monday"}, {"holiday": "true", "day": "tuesday"...}] };
$scope.createCopy = function (){
$scope.copyObject = angular.copy($scope.mainObject);
}