2014-01-29 54 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。