AngularJS如何向指令属性传递参数?
Angular指令中传递Scope参数到模板属性的解决方案
嘿,我来帮你搞定这个问题~你现在的核心问题是模板里直接写了静态属性值,没有和指令scope里的变量做绑定,所以Angular没法把你传递的appSearchText和appSearchCommand对应到title和ui-sref属性上。
正确的模板修改方式
你只需要把模板里的属性值改成Angular的插值表达式(用{{ }}包裹变量),就能把scope里的参数绑定到对应的属性上。修改后的模板代码如下:
<a title="{{appSearchText}}" ui-sref="{{appSearchCommand}}"> <i class="fa fa-search"></i> </a>
补充说明
- 你的指令scope定义用
@是完全正确的,@专门用来绑定父作用域传递的字符串类型值,刚好匹配你要传递的title文本和路由状态名称。 - 使用指令时,要记得用短横线分隔的属性名传递参数(Angular会自动转换成驼峰式对应到scope里的变量),示例用法如下:
<div app-search app-search-text="点击触发搜索" app-search-command="search.results"></div> - 如果后续你需要传递动态表达式(比如
appSearchCommand是一个变量而非固定字符串),可以把scope里的@改成=,不过目前你的场景用@就足够啦。
内容的提问来源于stack exchange,提问作者Claudio Moraes
相关产品推荐
相关产品推荐

