我的json对象," flowComponents"包含字符串(名称)和字符串数组(版本)。例如:
{
"_id": "553e87f3205465e83b46999b",
"name": "FLOWCOMPONENT_CONTACTCOMBINATION_EDITION",
"__v": 0,
"edition": [
"billing",
"billingDelivery",
"default",
"deliveryAddressOnly",
"deliveryBillingLicensee",
"deliveryBillingLicenseeWithWrapper",
"deliveryLicensee",
"deliveryOnlyCopyToAll",
"licenseeDelivery",
"sassDefault",
"sassDeliveryOnlyCopyToAll"
]
}
我需要在现有的flowComponents对象中添加/连接另一个版本。我的表单有一个下拉列表,其中包含现有flowComponents的名称,以及一个文本区域,用于生成每行文本的数组:
<form ng-submit="addToExistingFlowComponent()">
<div class="interact">
<select ng-model="existingName" chosen options="flowComponents" ng-options="item as item.name for item in flowComponents" data-placeholder="Select a flow component...">
</select>
</div>
<div class="interact">
<label class="interact-label">Enter each edition on a new line.</label>
<textarea id="text_area" placeholder="Edition" ng-model="existingEditionList" ng-list=" " ng-trim="false"></textarea>
</div>
<button type="submit">Submit</button>
</form>
这是我控制器中的添加版本方法:
$scope.addToExistingFlowComponent = function(){
if(!$scope.existingName || $scope.existingName === '') { return; }
var existingFC = $scope.existingName._id;
sendAppData.postEdition( existingFC, {
edition: $scope.existingEditionList
});
$scope.existingName = '';
$scope.existingEditionList = '';
};
这是将数据发布到服务器的方法:
this.postEdition = function(existingFC, newEdition) {
return $http.post('/new-flow-component', newEdition).success(function(data){
flowComponents.push(data);
});
};
问题是,这是将数据推送到新对象而不是添加到现有对象。我能够将现有对象的_id传递给existingFC参数,但我无法弄清楚如何在函数(数据)内部将其推入正确的版本数组。
答案 0 :(得分:1)
我修改了您的代码,以便将文本区域中的新版本附加到您选择的版本数组中。我删除了发布到服务器的内容,只需将提交的“新”版本附加到版本数组即可。以下是此示例中的Plunker:http://plnkr.co/edit/U2BE9Sdlictj9dEIWkjc?p=preview
希望这能帮到你
控制器:
app.controller('MainCtrl', function($scope) {
$scope.flowComponents = [{
"_id": "553e87f3205465e83b46999b",
"name": "FLOWCOMPONENT_CONTACTCOMBINATION_EDITION",
"__v": 0,
"edition": [
"billing",
"billingDelivery",
"default",
"deliveryAddressOnly",
"deliveryBillingLicensee",
"deliveryBillingLicenseeWithWrapper",
"deliveryLicensee",
"deliveryOnlyCopyToAll",
"licenseeDelivery",
"sassDefault",
"sassDeliveryOnlyCopyToAll"
]
}]
$scope.addToExistingFlowComponent = function(){
if(!$scope.existingName || $scope.existingName === '') { return; }
var existingFC = $scope.existingName._id;
var newEdition = {
edition: $scope.existingEditionList
};
console.log($scope.existingName);
console.log(newEdition);
for(var i=0;i<$scope.existingEditionList.length;i++){
$scope.existingName.edition.push($scope.existingEditionList[i]);
}
console.log($scope.flowComponents);
$scope.existingName = '';
$scope.existingEditionList = '';
};
});
您的HTML:
<body ng-controller="MainCtrl">
<form ng-submit="addToExistingFlowComponent()">
<div class="interact">
<select ng-model="existingName" chosen options="flowComponents" ng-options="item as item.name for item in flowComponents" data-placeholder="Select a flow component...">
</select>
</div>
<div class="interact">
<label class="interact-label">Enter each edition on a new line.</label>
<textarea id="text_area" placeholder="Edition" ng-model="existingEditionList" ng-list=" " ng-trim="false"></textarea>
</div>
<button type="submit">Submit</button>
</form>
</body>