2014-01-29 45 views
0

我需要在我的landingPage-builder項目中的一些指針。 (我現在卡住了!)。

主要問題如下: 模板中的每個元素(如h1和段落)都附加了指令。我需要的指令是:創建一個HTML模板,並附帶其他一些指令,如ng-click,ng-options等,將模型的綁定保持原樣(當前遠離工作),更新模型改變。

我不想追加或替換指令所在的元素,而是創建一個html模板並將其插入到DOM中(幾乎像另一個視圖),以便可以更新左側的模型從右側的「設置」框中選擇。

該項目在這裏可以查看:http://193.107.29.196/~stian123/landingPageV3/app/#/pagebuilder/2

您可能需要允許控制允許原產地爲Chrome:https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi/related

我有點困惑$編譯和並不真正知道什麼時候我需要使用這部分指令api。

有什麼建議嗎? 謝謝!

+0

我看着你的應用程序。您錯過了數據綁定和範圍的全部要點。每次單擊左側的某個項目時,不應該立即創建右側面板。我不完全明白你想在那裏完成什麼,但如果你真的利用angular.js功能,它會容易得多。 –

回答

0

如果我正確理解你的問題,你想動態地創建模板,其中的一些模板具有Angular屬性,然後將它們附加到DOM。

首先,(希望)回答你的問題,什麼時候到$調用編譯:

每當你在HTML加載從外部角度的模板系統(如嘗試設置$(元素)的.html(myHtmlString)) ,您需要讓Angular在將它附加到DOM之前進行編譯。換句話說:

elem.append($compile(yourHTMLString)(scope)); 

這讓角行程DOM和分析任何指示和綁定,並將它們連接到所提供的範圍。如果您沒有進行$編譯,Angular完全不知道這些綁定的意圖,但Angular從未閱讀過HTML。其次,我不知道你希望你的模板有多靈活,但如果它們相對固定,但是有一些固定的可定製選項(文本,顏色,字體大小等),那麼你可能會更好一些。爲每個「視圖」創建一個指令,並將視圖選項綁定到指令的範圍。然後,您可以更改右側面板中指令範圍的字段,並直接更新視圖。在這種情況下甚至不需要使用$編譯。

如果您希望用戶能夠手動添加模板HTML代碼,則必須按上述方式編譯HTML。