我在一个类中有一个可以随时更改的变量?有没有一种方法可以让js反应地检查它是否已更改以及是否确实执行了功能?我没有控制该对象的权限,可以对其进行查看和修改,但是我的代码不是唯一可以执行此操作的代码。
答案 0 :(得分:2)
如果您是此对象的所有者,则可以在其上使用Proxy对象代替原始对象。在这种情况下,您将完全控制与对象一起产生的每个操作
答案 1 :(得分:0)
在Meteor(已为其添加标签)中,您可以使用Tracker
来自动运行功能,无论响应数据源是由谁改变还是由谁改变。
阅读:https://docs.meteor.com/api/tracker.html
现在在Blaze(您也已对其进行了标记)中,您还具有一个模板内部跟踪器:
Template.myTemplate.onCreated(function (){
const instance = this
instance.autorun(() => {
// this behaves like Tracker.autorun
})
})
如何使变量无功?
如果在自动运行中访问反应变量,则会触发给定函数。普通对象是无反应的。在Meteor中,您可以使用
存储数据ReactiveVar:https://docs.meteor.com/api/reactive-var.html
ReactiveDict:https://atmospherejs.com/meteor/reactive-dict
(迷你)mongo光标:https://docs.meteor.com/api/collections.html#mongo_cursor
从这些数据存储区访问数据会触发跟踪器的计算。
阅读这些文档应该可以清楚地理解Meteor的反应性概念,并且您应该能够编写反应性模板。