如何将ng-repeat项目对象访问到指令范围和子范围内?

Tenfour

ng-repeat在自定义元素指令中使用。两个类似的问题:

  1. 如何从指令的link处理程序访问枚举项
  2. 如何从项目的控制器访问枚举的项目?在我的示例中MyItemCtrl,在中$scope.myItemClicked

可以使用的插件:http ://plnkr.co/edit/64PiskrR7aGFKfrSq1up?p=preview

我的主要HTML看起来像这样:

<my-item ng-repeat="myItem in myArray"></my-item>

myItem指令创建这样的:

app.directive('myItem', function() {
  return {
    replace: true,
    restrict: 'E',
    templateUrl: 'myItemTemplate.html',
    link: function($scope, $element, $attributes) {

      $('#log').append('Directive link phase. How can I access myItem here?\n');

    }
  };
});

该模板myItemTemplate.html为:

<a href="#" ng-click="myItemClicked()" ng-controller="MyItemCtrl">
  Click here to examine: {{myItem}}<br />
</a>

我的孩子控制器是:

app.controller('MyItemCtrl', function($scope) {

  $scope.myItemClicked = function()
  {
    $('#log').append('myItemClicked(). How do I access myItem here without passing it as an argument?\n');
  };

});

我意识到我可以将其myItem作为函数参数进行传递,因此可以进行以下更改:

ng-click="myItemClicked()"

ng-click="myItemClicked(myItem)

但是,这看起来确实很微不足道。我敢肯定有更好的方法。对?

多纳尔

在您的控制器中添加一个属性来存储所选项目:

$scope.itemClicked = {};

在链接函数的指令中,可以从元素中获取选定的项:

link: function(scope, element, attributes) {
  scope.itemClicked = element;
}

我在这里更新了插件:http ://plnkr.co/edit/YtHePqSGZk9ja40sygG9?p=preview

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在指令的隔离范围内访问全局角度对象?

如何将值添加到范围内的位置以循环但跳过子范围?

AngularJS:在范围内使用“ =”将模型值从ng-repeat传递到ng-include到指令失败

如何将列范围和行范围内的所有值相乘?

如何将池分配给给定范围内的给定数量的项目

如何将数字保持在特定范围内?

如何将数字限制在范围内

如何将索引保持在向量范围内?

如何将ng-model从指令传递到模板

如何将ng-if用于指令show / hide

如何将范围变量传递给指令的`tAttrrs`对象?

在指令的隔离范围内运行“ng-click”

如何在范围内将项目追加到地图?

如何将ng-repeat放入ng-repeat中n次

AngularJS:子输入指令需要在其父级范围内进行编译,以便ng-model进行绑定

如何将ng-repeat迭代器传递给ng-click

如何将ng-repeat绑定到先前单击的ng-click?

AngularJS:指令更新ng-repeat内的父范围

在ng-repeat中,如何将元素的值传递给指令?

如何访问ng-repeat范围?

AngularJS ng-repeat关于指令和父范围

如何在Spacemacs中进行项目范围内的查找和替换?

如何将变量从父组件中声明的ng-template传递给子组件/指令?

如何将ng-model设置为具有动态值的父范围

如何将范围相关的插件分解为ng-grid服务

如何将一个范围内的值插入到另一个范围内

如何将$ index作为ng-repeat中的对象键传递?

如何将项目从ng-repeat传递到由ng-include创建/加载的控制器?

如何在时间范围内和不在时间范围内选择