0
我正在嘗試更新ng-repeat列表中的每個文檔都有自己的形式的ng-repeat中的當前文檔。正在更新mongodb文檔angular-meteor
我試圖讓mongo更新文檔,當我點擊更新按鈕,就像我現在有它的作品,但我不知道這是否是最好的方法。
這裏是我的控制器:
$scope.showPreloader = true;
$scope.subscribe('events',() => {
$scope.showPreloader = false;
});
$scope.helpers({
events: function() {
return Events.find({});
}
});
$scope.save = function() {
Events.insert($scope.newEvent);
$scope.newEvent = undefined;
console.log('saved');
};
$scope.update = function(event) {
Events.update({
_id: event._id
}, {
$set: {
name: event.name,
description: event.description,
background: event.background
}
}, function(error, data) {
if (error) {
console.log('unable to update the event: ' + error);
} else {
console.log('Done!' + data);
}
});
};
,你可以在這裏看到,在$scope.update
功能,我設置$set
所有我想更新的參數,但是我正在尋找一種方法,使之自動,所以我不必輸入每個參數進行更新,就像在$scope.save
函數Events.insert($scope.newEvent);
中那樣。
這裏的形式:
<div>
<div class="spinner" ng-show="showPreloader"></div>
<div ng-repeat="event in events | orderBy: '-createdAt'" class="wow fadeInUp col-md-6 events-grid-background" ng-style="{'background-image' : 'url({{event.background}})'}">
<div class="grid-content" ng-init="event.edit = true" ng-show="event.edit" layout="column" layout-wrap layout-align="center center">
<h2 class="blue grid-title">{{event.name}}</h2>
<p class="bold">{{event.description | limitTo: 100}}...</p>
<a ui-sref="event-detail({eventId: event._id})" class="blue-hover bold">¡Leer Más!</a>
<button class="btn btn-default btn-sm" ng-if="isAdmin" ng-click="event.edit = !event.edit"><strong>Editar</strong></button>
<button class="btn btn-default btn-sm" ng-if="isAdmin" ng-click="remove(event)"><strong>Delete</strong></button>
</div>
<!-- event edit form -->
<div ng-if="isAdmin" class="grid-content" ng-show="!event.edit">
<form name="form" novalidate>
<label class="white" for="name">Título</label>
<input id="name" name="name" type="text" class="form-control" ng-model="event.name" required>
<label class="white" for="description">Descripción</label>
<textarea id="description" name="description" type="text" class="form-control" ng-model="event.description" required></textarea>
<label class="white" for="background">Imagen</label>
<input id="background" name="background" type="text" class="form-control" ng-model="event.background" required>
<br>
<button type="submit" class="btn btn-primary btn-sm" ng-if="isAdmin" ng-click="event.edit = !event.edit; update(event)"><strong>Guardar</strong></button>
<button class="btn btn-default btn-sm" ng-if="isAdmin" ng-click="event.edit = !event.edit"><strong>Cancelar</strong></button>
</form>
</div>
</div>
</div>
有沒有辦法做到這一點,而無需設置一個接一個的參數?
謝謝!