2016-03-07 75 views
1

TLDR流星 - 无对象/类

我喜欢真正专注于从视图模型/控制器保持业务逻辑了。我发现这在流星中有时相当困难。也许我错过了这一点,但我真的在两件事之一:

1)一个非常好的文件解释如何使用反应值如何在一个非常低的水平。 2)以某种方式管理对象的软件包,以便如果任何设置者被更改,他们会通知所有将因此而改变的获取函数。

不幸的是我还没有见过。

我的例子

我有一个公平位OB业务逻辑坐在用于记录一个咨询一个对话框后面。我可能有一个事件来设置状态的改变。

我想要做的是这样的事件:

const cc = new ConsultationEditor(); 
cc.setChiefComplaint(event.target.value); 
console.log(cc.data()); 
ConsultationDict.set("consEdit", cc.data()); 

当用户更新了这个值,我则喜欢展示一些领域的基础上的变化。为此,我有以下人员的帮手:

fields: function(){ 
    console.log("trying to get fields"); 
    const obj = ConsultationDict.get('consEdit'); 
    cc = new ConsultationEditor(obj); 
    return cc.getFields(); 
} 

但不幸的是,这并不适用于我。

回答

1

什么是您的ConsultationDict

你描述它的方式,你想要它是一个ReactiveDict正如在官方的ReactiveDict包。

https://atmospherejs.com/meteor/reactive-dict

检查本教程的例子:

https://themeteorchef.com/snippets/reactive-dict-reactive-vars-and-session-variables/

如果你真的需要在你的反应更微调,您还可以设置一个依赖跟踪tracker = new Tracker.Dependency,然后引用它的地方你用tracker.changed()更改一个变量,其中数据需要用tracker.depend()这样的来通知:

var favoriteFood = "apples"; 
var favoriteFoodDep = new Tracker.Dependency; 

var getFavoriteFood = function() { 
    favoriteFoodDep.depend(); 
    return favoriteFood; 
}; 

var setFavoriteFood = function (newValue) { 
    favoriteFood = newValue; 
    favoriteFoodDep.changed(); 
}; 

getFavoriteFood(); 

看到完整的跟踪文档在这里:

https://github.com/meteor/meteor/wiki/Tracker-Manual

我也发现了这个要点是有用的建立反应对象:

https://gist.github.com/richsilv/7d66269aab3552449a4c

和一个视图模型类型的行为,检查out

https://viewmodel.meteor.com/

我希望这有助于。

+0

'ConsultationDict'是一个反应词典。我知道它的工作原理,但是在我写上述内容时有些奇怪,而且在进行其他更改后我现在无法复制它。抱歉。 – Hans