2015-06-21 57 views
0

比方說,您的index.html中沒有包含您的Ractive聲明的onInit和onRender部分,而是需要訪問Ractive對象的許多函數,因此您希望將index.html保持更簡潔和引用的功能其他文件中的庫。正在通過ractive作爲論證的良好做法?

將Ractive本身作爲參數傳遞是否有任何傷害,所以這些「外部」函數可以訪問它?

例如,而不是:

oninit: function() { 
    // tons of code here 
} 

這樣做呢?

oninit: function() {  
    doThisThing(ractive) 
} 

然後,在一個單獨的文件:

function doThisThing(ractive) { 
    pingAnAPI(function(response) { 
     ractive.set('data', response); 
     )}; 
} 

只是想知道,如果你這樣做了很多會有內存問題或其他任何不良影響。

謝謝,Ractive太棒了!

回答

1

doThisThing似乎是你的數據層,不應該知道你的UI層。否則,你會冒險緊密耦合的代碼。

而不是分解代碼並傳遞周圍的東西,可以取消數據提取邏輯。調用API,讓它返回一個承諾。 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頁面瞭解更多詳情。

至於內存問題,我現在不用擔心。代碼可維護性應該是您的第一個議程。

+0

謝謝!這就說得通了。 –