javascript - 传递给隔离作用域的函数不接收参数

标签 javascript angularjs angularjs-directive

我正在尝试将函数 (removeItem) 传递到指令的隔离范围,然后在指令的模板中调用此函数,但是该函数被调用但没有参数。我试过这样:

<my-directive remove="removeItem(item)"></my-directive>

定义removeItem的地方:

scope.removeItem = function(item) {
  console.log('item removed');
}

隔离范围:

scope: {
    remove: "&"
}

和指令模板:

<div  ng-repeat="item in allItems | selectedItemFilter" >
   <label>{{ item.description }}</label>
   <div>
     <button ng-click="remove(item)"> Remove</button>
   </div>
</div>

因此,当单击删除按钮时,将调用实际的 removeItem,但没有未定义的 item 参数。我也尝试传递简单的字符串参数,但 removeItem 从来没有得到它,它也是未定义的。什么会导致这种行为?

最佳答案

Angular 在这方面有点不直观。您实际上需要像这样指定参数名称(在 View 中):

<button ng-click="remove({item: item})">

关于javascript - 传递给隔离作用域的函数不接收参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29289400/

相关文章:

javascript - 内容安全策略随机数不适用于事件处理程序属性

javascript - 使用 AngularJs 往返 "transfer"指令的最佳方法是什么

JavaScript 通过类名获取子元素

javascript - 使用 AngularJS 从指令设置范围变量

javascript - ReactJS:显示或隐藏元素仅在第一次单击按钮时有效

javascript - AngularJS 使用 ng-upload 上传图片

javascript - angularjs $parse 字符串到 "controller as"方法

javascript - 为什么过滤器隐藏所有元素?

AngularJs : Passing parameter to ng-click in directive

javascript - AngularJs - 如何在 ng-repeat 中的每次迭代中过滤嵌套数组对象?