【发布时间】:2016-01-14 23:49:15
【问题描述】:
例如,在 this 控制器中,当另一个用户更改 Paries 集合时,控制器方对象会自动更新,但我们如何捕获此更新并运行一些控制器逻辑?
this.helpers({ parties: () => Parties.find({}) });
具体问题: 收到的答案并不能解决我的问题,因为它不是我需要在更新时执行的服务器逻辑或任何数据库操作。实际上,我需要运行的是控制器逻辑。
在以下示例中,如果表单未更改,我将禁用提交按钮。 isFormChange 函数将派对与 originalParty 进行比较。当派对从服务器端更改时,我需要重新定义 originalParty 值。那么我该怎么做呢?
<form ng-submit="vm.updateParty()">
<input type="text" ng-model="vm.party.name">
<input type="submit" ng-disabled="!vm.isFormChanged()" value="Submit">
</form>
指令控制器:
function Ctrl($scope, $reactive) {
let vm = this;
$reactive(vm).attach($scope);
vm.helpers({ party: () => Parties.findOne({_id: vm.partyId}) });
let originalParty = angular.copy(vm.party);
vm.isFormChanged = isFormChanged;
vm.updateParty = updateParty;
function isFormChanged() {
return !angular.equals(vm.party, originalParty);
}
function updateParty() {
Meteor.call('updateParty', vm.party._id, vm.party.name);
}
}
【问题讨论】:
标签: meteor angular-meteor