【发布时间】:2014-09-22 18:15:53
【问题描述】:
解决这个问题的人将是 Javascript、Angular Genius...
这是关于将 clickHandlers(函数/范围)注入动态生成的 DOM 元素
在这个基本设置中,DOM 元素由 Angular 生成,Angular 被引导到一个元素,内容由一个数组填充。 .
有没有一种方法可以让我们在每个锚点上动态设置点击处理程序(不需要跨浏览器实现,addEventHandler 就足够了)。
最好查看下面给出的 Fiddle 链接本身以获得完整的图片。
<div id="navigation" data-ng-cloak>
<ul data-ng-controller="foliosController" class="nav nav-pills nav-stacked">
<li data-ng-repeat="folio in folios" class="active"><a href="#">{{folio.title}}</a></li>
</ul>
</div>
Javascript
var self = this;
var navigation = angular.module("navigation", []);
navigation.controller("foliosController", function($scope){self.foliosController($scope)});
angular.bootstrap(document.getElementById("navigation"), ["navigation"]);
小提琴: http://jsfiddle.net/casadev/n50ecw5m/
奖励:如果有办法仅将第一个锚设置为活动。
编辑: 范围内定义了一个clickHandler,需要将clickHandler与生成的dom链接链接起来。
clickHandler: function(event) {
alert(event.target);
}
编辑 2:取得了一些进展,但手动附加了 clickHandlers 以保持在范围内,希望 angular 可以做到这一点。 http://jsfiddle.net/casadev/n50ecw5m/14/
我自己回答后的小问题: 如果我不需要,有没有办法避免 templateUrl?
【问题讨论】:
-
为什么不直接使用 ng-click?
-
@JasonGoemaat 我的要求是留在范围内(html 属性上没有代码),如果您发现在范围内定义了 clickHandler 函数,请查看小提琴jsfiddle.net/casadev/n50ecw5m
-
我已经回答了我的问题,如果我不需要指定一个,任何人都可以建议我如何在功能时摆脱配置中的 templateUrl。没有它,代码就无法工作
标签: javascript angularjs angularjs-scope