我有@observable
的课(所有的例子都是打字稿/伪代码)
class Page {
id: number = 0;
@observable
isVisible: boolean = false;
}
let array = [new Page(), new Page(), new Page()];
还有一些功能:
changeVisibility(obj)
{
//ajax call like .post("/api/changeVisibility/", {id:obj.id, isVisible:obj.isVisible})
}
我想对任何对象的isVisible
更改做出反应。
我可以枚举数组并制作类似:
array.forEach(el => {
reaction(
() => el.isVisible,
isVis => changeVisibility(el);
});
});
但我可以用一个功能吗? 一种"数组观察者对元素属性的变化做出反应"。
这样的事情:
reaction(array, //source
(el) => el.isVisible, //observable to react
(el) => changeVisibility(el) //callback with object
)
答案 0 :(得分:0)
如果反应是负责发送单个页面的更新,我会在Page
构造函数本身设置该反应,或者在Page中有一个实用程序功能,这样你就不会必须让你的页面数组与你的反应处理器数组保持同步(但是最佳做法是,如果要删除页面,请处理反应)