我试图使用AngularJS将一个关键:值对推入一个新对象,并且似乎遇到了一些麻烦。
这是html:
<div class="small-12 medium-6 large-6 columns">
<div id="addSubTarget">
<p>Add Targets</p>
<input type="text" ng-model="sublevel.tagName">
<button type="button" class="resultsButton" ng-click="addTag()">Submit</button>
</div>
<div id="addSubTargetBox">
<p>Targets Added</p>
<div id="targetAddedBox">
<div class="targetAddedInBox" ng-repeat="tag in tagsFeed track by $index">
{{tag}}
<i class="fa fa-trash-o" title="Delete this tag" ng-click="deleteTag($index)"></i>
</div>
</div>
</div>
</div>
<div class="small-12 medium-6 large-6 columns">
<div class="sublevelAddTextArea">
<p>Instructions</p>
<textarea rows="4" ng-model="sublevel.instructions"></textarea>
</div>
<div class="sublevelAddTextArea">
<p>Response</p>
<textarea rows="4" ng-model="sublevel.response"></textarea>
</div>
</div>
按钮在这里:
<button type="button" class="resultsButton" ng-click="submitNewSub()">Submit</button>
这是控制器中的功能:
$scope.submitNewSub = function(){
var arrayForUse = [];
arrayForUse.push({
tag: $scope.tagsFeed,
instructions: $scope.sublevel.instructions,
response:$scope.sublevel.response
});
console.log(arrayForUse);
$scope.listTable.push(arrayForUse);
}
我正在使用硬编码数组进行测试,如下所示:
$scope.listTable = [{
tag: "tags 1",
instructions: "instructions 1",
response: "response 1"
},
{
tag: "tags 2",
instructions: "instructions 2",
response: "response 2"
}];
我基本上需要那些输入才能在该结构中推送到该数组,因此角度双向数据绑定将更新我的前端,但似乎某些东西对我不起作用。
答案 0 :(得分:1)
上面的代码是将数组推送到数组:
var arrayForUse = [];
arrayForUse.push({tag:$scope.tagsFeed, instructions:$scope.sublevel.instructions, response:$scope.sublevel.response});
$scope.listTable.push(arrayForUse);
这是你想要的吗?上面的硬编码测试数组似乎表明你只需要一个数组。
答案 1 :(得分:1)
我想你想逐个推送arrayForUse
数组中的每个元素,而不是一次推送整个数组。因此,您需要更改$scope.listTable.push(arrayForUse)
:
Array.prototype.push.apply($scope.listTable, arrayForUse);
将arrayForUse
中的每个元素作为单个调用传递给push方法(相当于:$scope.listTable.push(arrayForUse[0], arrayForUse[1], arrayForUse[2], ...);