2016-07-22 60 views
0

我正在使用餘燼的項目。有條件的邏輯可以放在HTML模板,控制器和函數定義的位置。我有一個操作只需要在全局變量爲true時觸發。條件操作邏輯應該去哪裏?

<div {{action 'CallThisAction' on='click'}}>...</div> 

在.hbs我可以做

{{#if global.x}} 
    <div {{action 'CallThisAction' on='click'}}>...</div> 
{{else}} 
    <div>...</div> 
{{/if}} 

或在功能我可以

CallThisAction(){ 
if(global.x){ 
    //do something 
    } 
} 

或我可以添加邏輯到控制器,以防止CallThisAction被稱爲偏置關閉全球。控制器也被折舊。

我還可以通過爲PARAM:

CallThisAction(x){ 
if(x){ 
    //do something 
    } 
} 

有一個更清潔的方式做到這一點?理想情況下,這裏的解決方案會很好:Feature Request

回答

1

您的模板不應該使用全局變量。最好在你的動作中存儲這樣的邏輯:

actions: { 
    CallThisAction(){ 
    if(!global || !global.x){ 
     return; 
    } 
    // do something 
    } 
} 
+0

我申請了答案。我試圖更好地理解爲什麼,你能提供一個理由嗎? – ajputnam

+0

模板應該只存儲所需的邏輯。它是視圖層而不是控制器層。模板和組件應儘可能簡單。關於如何處理操作的邏輯應該存儲在控制器中。如果在沒有設置global.x時不需要在模板中顯示不同的HTML,但只想設置global.x時觸發操作,則最好將global.x檢查移至控制器並保持模板簡單。 –

+0

太棒了!這就說得通了。 – ajputnam

相關問題