在指令中绑定方法
Bind method inside a directive
以下是我的自定义指令的Angular代码,该指令创建了一些div:
function footerDirective($compile){
return {
link: function(scope,elements,attributes){
function createDiv(content,cname,callback){
var new_div=document.createElement("div");
new_div.setAttribute("ng-click", callback);
$compile(new_div)(scope);
new_div.innerHTML=content;
new_div.className=cname;
elements[0].appendChild(new_div);
}
for (var i=0;i<5;i++) {
createDiv(i,"class-numbers","gallery.clickPage()");
}
}}}
其中CCD_ 1。以上操作很好。但是,我想在gallery.clickPage中传递I作为参数,类似于:
gallery.clickPage.bind(this,i)
如果我将后者作为createDiv内部的参数传递,它将不起作用。我可以通过哪种方式实现我的目标?
正确的方法是在模板中有
<div ng-repeat="mydiv in mydivs" ng-click="gallery.clickPage($index)">{{mydiv.content}}</div>
在指令中:
scope.mydivs = [{content : 1}, {content : 2}, ...]
现在,回答您的问题:您的i
是幻影——当您看到页面时,它并不存在,它只存在于angular创建页面时。所以你不能通过。你可以这样通过:createDiv(i,"class-numbers","gallery.clickPage(" + i + ")")
;
或者,您可以将i
值放入范围:scope.myVars=[1,2,3,4,5]createDiv(i,"class-numbers","gallery.clickPage(myVars[" + i + "])")
;
最后要注意的是,如果你想创建角度元素,你只需要:
angular.element('<div ng-click="someF()">{{anything}}</div>')
,然后编译并附加到父级。
为什么不使用:
for (var i=0;i<5;i++) {
createDiv(i,"class-numbers","gallery.clickPage(" + i + ")");
}
如果我只是一个数字,你可以这样传递它,生成的html将是gallery.clickPage(1)等。
将通过1个
相关文章:
- 将对象的方法绑定到元素的事件
- 将类方法绑定到类外绑定的事件处理程序内的AJAX成功回调
- bind():您正在将一个组件方法绑定到该组件.React会自动为您执行此操作
- JS方法绑定与2个不同的这个
- backbonejs:不能调用未定义的方法“绑定”
- 将所有方法绑定到“this”
- 内联方法绑定是一种不好的做法
- 如何使用 jQuery 和静态页方法绑定控件数据
- 在Javascript中,有没有一种简洁的方法可以将方法绑定到对象
- 如何将多个方法绑定到单个事件
- 监视一个方法与西农.方法绑定到事件侦听器.方法已执行,但.calledOnce为false
- Javascript OOP:将方法绑定到事件处理程序
- “this"当方法绑定到事件侦听器时未定义
- 如何将参数传递给绑定方法?绑定与匿名方法
- 将c++的虚方法绑定到具有覆盖能力的js中
- Backbone.js集合方法绑定
- 为什么我必须为React组件类中定义的方法绑定(this),而不是在常规ES6类中
- 了解AngularJS指令方法绑定是否默认为angular.noop
- 主干任务示例方法绑定
- 将带有参数的方法绑定到主干模型更改事件