首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS -单独作用域表达式("&")的替代用法

AngularJS -单独作用域表达式("&")的替代用法
EN

Stack Overflow用户
提问于 2015-06-22 04:32:29
回答 2查看 217关注 0票数 0

我知道"&"绑定用于将方法(表达式)传递给指令isolate scope,因此指令将能够在需要时执行它。

很多时候,我需要将相同的表达式从我的主控制器传递给嵌套指令(2-3层)。这就是为什么我自己,我不喜欢使用"&"来达到这个目的。对我来说,使用"="绑定发送“回调”要好得多。但这不是一个问题。

问题是:

除了传递函数之外,我还可以使用"&"做什么呢?我可以有这样的东西吗:my-directive-click="clickCount +=1"

EN

回答 2

Stack Overflow用户

发布于 2015-06-26 17:31:13

&更多的是允许您处理表达式,更重要的是(在我看来)允许您将参数放入调用父对象的作用域中。

例如,如果您有:

代码语言:javascript
复制
scope: {
    something: '&'
} 

然后在该指令模板中,您可以执行以下操作:

代码语言:javascript
复制
<select ng-model="selection" ng-change="something({$item: selection})" ...>

此指令的调用者/用户可以访问传递给something的表达式中的$item,即$item被置于其作用域中。

例如:

代码语言:javascript
复制
<my-dir something="myOwnVar = $item + 1"></my-dir>

下面是一个包含链接( &表达式的多个嵌套调用)的柱塞器示例:http://plnkr.co/edit/j4FCBIx0FVz4OT0w50bU?p=preview

票数 1
EN

Stack Overflow用户

发布于 2015-06-22 05:05:36

实际上,&指的是单向数据绑定。

因此,=是双向数据绑定,这意味着对指令所做的更改将持久化到原始对象。

@只是一个字符串。

&是特别的。问题是它为你的值创建了一个getter,在调用函数的情况下,getter实际上调用了这个函数。我倾向于在DDO上这样做:

代码语言:javascript
复制
.directive('myDirective', function() {
  return {
    restrict: 'E',
    scope: {      
      getParameters: '&?params'
    }

因此,通过这种方式,绑定到scope的值是getParameters (因此很明显是一个getter),但是在指令元素上,您只需要将其引用为params

代码语言:javascript
复制
<my-directive params="ctrl.params">

你的问题是模糊的,即使你可以做到你所要求的,我认为最好是在指令中这样做,而不是你提出的方式。

我希望这对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30969055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档