我ng-repeat
在自定义元素指令中使用。两个类似的问题:
link
处理程序访问枚举项?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] 删除。
我来说两句