假设您希望保持index.html更清晰,更简单和引用函数,而不是在index.html中使用许多需要访问Ractive对象的函数打包Ractive声明的onInit和onRender部分。在其他文件的库中。
将Ractive本身作为参数传递是否有任何损害,因此这些“外部”函数可以访问它?
例如,而不是:
oninit: function() {
// tons of code here
}
这样做?
oninit: function() {
doThisThing(ractive)
}
然后,在另一个文件中:
function doThisThing(ractive) {
pingAnAPI(function(response) {
ractive.set('data', response);
)};
}
只是想知道如果你这么做的话会不会有内存问题或任何其他不良影响。
谢谢,Ractive太棒了!
答案 0 :(得分:1)
doThisThing
似乎是您的数据层,不应该知道您的UI图层。否则,您将面临紧密耦合代码的风险。
不要破坏代码并传递ractive,而是打破数据获取逻辑。调用API,让它返回一个promise。 Ractive可以坚持这一承诺。
// On the component
oninit: function() {
var instance = this;
pingAnAPI().then(function(response){
instance.set('data', response);
});
}
// On your data layer
pingAnAPI: function(){
return $.get('path/to/endpoint');
}
由于您正在考虑使用单独的文件,因此可以实现它的另一种方法是从index.html
突破并使用组件文件。有关详细信息,请阅读component spec for authors页面。
至于记忆问题,我早就不用担心了。代码可维护性应该是您的第一个议程。