【发布时间】:2016-01-18 08:40:03
【问题描述】:
我有一个订阅文档的模板。只要模板助手中使用的属性发生更改,DOM 和 Blaze 就会立即更新。
我还有一些没有出现在 DOM 中并且依赖于文档属性的自定义逻辑。更新属性时如何调用函数来更改该逻辑?
我正在寻找类似this.data.attr.onChanged 的东西,其中this 指的是模板,this.data 是发送到模板的数据,像往常一样;或一个 Meteor 函数,它在我可以将回调放入其中的更改时重新运行。
我希望 template.onRendered 会被召回,但事实并非如此。
我已经阅读了很多关于反应变量的文章,但在这里找不到它们的用处。
[edit] 更改来自与另一个服务通信的服务器
我试过这样Tracker.autorun:
Template.editItem.onRendered(function() {
var self = this;
Tracker.autorun(function () {
console.log("tracker", self.data.item.socketId);
});
});
而对应的路线是:
Router.route('editItem', {
path: '/edit/:_id',
waitOn: function () {
var sub = Meteor.subscribe('item', this.params._id);
return [sub];
},
data: function () {
return {item: Items.findOne(this.params._id)};
},
action: function () {
if (this.ready())
this.render();
}
});
在某些时候,属性 socketId 会被服务器从相应的文档中删除,我确信这一点,因为我已经签入了 shell,但跟踪器没有重新运行。
【问题讨论】:
标签: meteor