3

角任务 1.5.x:

我有这样的对象:

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

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

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

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

请让我知道更多信息。

4

2 回答 2

1

你可以这样做:

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

html:

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

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

这就是angular.copy文档中解释的内容:

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

如果未提供目标,则创建对象或数组的副本。如果提供了目标,则删除其所有元素(对于数组)或属性(对于对象),然后将源中的所有元素/属性复制到它。如果 source 不是对象或数组(包括 null 和未定义),则返回 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);
}
于 2017-01-07T07:04:57.943 回答
1

使用时,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>

一般结构必须事先定义,但您不必初始化所有属性。它们将在触发绑定时接收值(视图 -> 模型)。

于 2017-01-07T07:19:56.907 回答