2014-02-07 28 views
0

得到了我在Angular建設的webapp。將演示數據放入角度控制器中?

此應用程序讓用戶授權帳戶,根據用戶的選擇提供特定的說明。

我已經實現了這個爲基於模型中的值顯示或隱藏的HTML,因此對於3種不同的選擇,我有3組不同的HTML部分,它們是相似但帶有不同文本的。

本着DRY的精神,我應該有一組HTML部分,而是根據模型的值切換文本。這意味着將文本數據放入模型中,包括小標記片段,如錨點和強標記。

將演示數據放入控制器是否違反了Angular的原則?

+0

您是否考慮過模板指令?我沒有充分理解這個問題,以便更好地提出建議。短代碼示例可能會有所幫助。 –

+0

K,讓我創建一個js小提琴... – Alan

回答

2

有相當多的選項可以避免重複代碼,具體取決於您要做什麼。下面的想法是事情,我會考慮,當他們有意義使用(我把這些從簡單到複雜,所以你大概可以跳過前幾個):

  • NG綁定 - 把它在span/div上。簡單&工程模型綁定到顯示

  • NG-開關,NG-如果NG隱藏,NG-顯示 - 工作有條件地顯示元素

  • 定製指令 - - 如果您想要根據模板更改dom,則在想要更改元素的行爲時使用此選項。如果使用「ng-transclude」,則模板元素的內容將包含在結果中。這可以是非常優雅的,但是當你有一種格式時它效果最好。我可以提供示例,但angular的文檔也有很好的例子。

  • 服務 - 我通常只是用它來提供數據。這可以通過一個restful api和$ resource或通過$ http調用。無論哪種方式,我不建議做比這裏加載/保存數據更多的工作。

  • $範圍方法 - 換句話說:

    $ scope.myMethod =函數(X,Y,Z){基於所述模型*// *代碼決策}

    然後,您可以通過預先構建的指令(ng-show等)或通過自定義指令來調用以前的方法之一,該指令可以控制dom的期望值。

  • ng-bind-html - 我知道建議的最後一個選項是使用此指令與$sce服務相結合來將所需的任何內容綁定到DOM。如果您使用角碼代碼進行綁定,請確保使用$compile服務。我通常不贊成這種方法,除非作爲最後的手段,因爲它使得很難找到DOM中的元素來自哪裏,它可以使調試+測試成爲一個真正的痛苦。也就是說,如果人們不需要它們,這些工具就不存在了。

我敢肯定,這是不完整的,也許別人有建議,但那是我的開始。祝你好運!