相关疑难解决方法(0)

如何理解指令的`terminal`?

在此页面中:http://docs.angularjs.org/guide/directive

指令定义对象

终奌站

如果设置为true,则当前优先级将是将执行的最后一组指令(当前优先级的任何指令仍将执行,因为未定义相同优先级的执行顺序).

我不太懂.什么current priority意思?如果有这样的指令:

  1. 带有{priority:1,terminal:false}的directive1
  2. 带有{priority:10,terminal:false}的directive2
  3. 带有{priority:100,terminal:false}的directive3
  4. 带有{priority:100,terminal:true}的directive4 //这是真的
  5. 带有{priority:1000,terminal:false}的directive5

请注意directive4terminal:true和其他人有false.

如果有一个html标签包含所有5个指令:

<div directive1 directive2 directive3 directive4 directive5></div>
Run Code Online (Sandbox Code Playgroud)

5指令的执行顺序是什么?

angularjs angularjs-directive

64
推荐指数
1
解决办法
3万
查看次数

将指令中的输入包装成角度

我有想法将输入包装到自定义指令中,以保证整个网站的外观和行为一致.我还想包装bootstrap ui的datepicker和dropdown.此外,该指令应处理验证和显示工具提示.

HTML应该看起来像这样:

<my-input required max-length='5' model='text' placeholder='text' name='text'/>
Run Code Online (Sandbox Code Playgroud)

要么

<my-datepicker required model='start' placeholder='start' name='start'/>
Run Code Online (Sandbox Code Playgroud)

在指令中我想创建一个dom结构,如:

<div>
 <div>..</div> //display validation in here
 <div>..</div> //add button to toggle datepicker (or other stuff) in here
 <div>..</div> //add input field in here
</div>
Run Code Online (Sandbox Code Playgroud)

我尝试了各种方法来实现这一目标,但总是遇到一些权衡:

  1. 使用transclude和replace将输入插入到指令dom结构中(在这种情况下,指令将被限制为'A'而非'E',如上例所示).这里的问题是,没有简单的方法来访问transcluded元素,因为我想在datepicker的情况下添加自定义属性.我可以使用transclude函数,然后在链接函数中重新编译模板,但这对于此任务来说似乎有点复杂.这也会导致transcluded范围和datepicker的切换状态出现问题(一个在指令范围内,另一个在transcluded范围内).

  2. 仅使用替换.在这种情况下,所有属性都应用于最外层的div(即使我在编译函数中生成模板dom结构).如果我只使用输入作为模板,那么属性在输入上,但我需要在链接函数中生成模板然后重新编译它.据我所知,角度的相位模型,我想避免重新编译和更改链接函数中的模板dom(虽然我看到很多人这样做).

目前我正在使用第二种方法并在链接功能中生成模板,但我想知道是否有人有更好的想法!

angularjs angularjs-directive angular-ui-bootstrap

14
推荐指数
2
解决办法
9720
查看次数