我有一个EventController并使用EventService保存到localStorage。
#if 0
blah blah
#if 0
blah blah
#endif
blah blah
#endif
查看所有活动:
vm.event = event;
function event() {
vm.dataLoading = true;
EventService.Create(vm.events) //save using ( api/events/ + id )
.then(function (response) {
if (response.success) {
FlashService.Success('Event created successful', true);
$location.path('/events');
} else {
FlashService.Error(response.message);
vm.dataLoading = false;
}
});
}
我的问题是我尝试添加带有数组的访客列表
<td>{{events.eventType}} </td>
<td>{{events.eventName}}</td>
...
HTML
vm.guests = [];
vm.addGuest = function () {
vm.guests.push(vm.newGuest);
}
vm.removeGuest = function (guest) {
var index = vm.guests.indexOf(guest);
vm.guests.splice(index, 1);
}
我可以从单个输入/按钮
向字符串添加字符串但是,数组不会传递给事件对象。
<input type="text" name="guests" id="guests" class="form-control" ng-model="vm.newGuest" />
<button type="submit" ng-click="vm.addGuest()" class="btn btn-primary">Add Guest</button>
<div ng-repeat="guest in vm.guests track by $index">
{{guest}}
我的目标是将数组添加到对象
{
"eventType": "Birthday",
"eventName": "Part at Lake Lettuce"
}
[
"Joe",
"Tom"
]
答案 0 :(得分:1)
您需要设置活动的guests
属性。您可能希望在event()
函数中执行此操作。
function event() {
vm.dataLoading = true;
vm.events.guests = vm.guests;
EventService.Create(vm.events)
.then(function (response) {
if (response.success) {
FlashService.Success('Event created successful', true);
$location.path('/events');
} else {
FlashService.Error(response.message);
vm.dataLoading = false;
}
});
}
在这种情况下,您必须初始化来宾数组。
vm.guests = vm.events.guests || [];
或者,您可以让您的来宾修改器功能引用事件
vm.addGuest = function () {
vm.events.guests.push(vm.newGuest);
}
vm.removeGuest = function (guest) {
var index = vm.events.guests.indexOf(guest);
vm.events.guests.splice(index, 1);
}
另外,我发现事件vs事件命名令人困惑。在EventController中,我建议将vm.event()
函数重命名为vm.createEvent()
,然后仅events
调用event
模型。