在Angular链接函数和访问指令参数中使用$compile
Use $compile inside Angular link function AND access directive arguements
我在angular.js 1.x中做了一个指令
我这样调用这个指令:
<mydirective dirarg={{value-1}}></mydirective>
我想通过在指令的链接函数中放置代码来操作DOM来创建指令。link函数生成的DOM的结构依赖于dirarg的值,我希望一些元素具有ng-click属性。
我已经设法让ng-clicks工作通过做以下:
app.directive('calendar',function($compile){
return{
link: function(scope, element, attributes){
element.append($compile("<button ng-click='testt()'>hi</button>")(scope));
}
}
});
当我点击这个指令生成的按钮时,函数testt()
运行。但是,如果我试图访问dirarg
,对test()的调用就会中断。
app.directive('calendar',function($compile){
return{
scope:{
dirarg: '@'
},
link: function(scope, element, attributes){
element.append($compile("<button ng-click='testt()'>"+scope.dirarg+"</button>")(scope));
}
}
});
这段代码现在用diarg填充按钮的文本,但是ng-click功能失效了。有人知道我怎么能有ng-click工作,并访问参数的指令?要清楚,这个按钮只是一个例子。我的实际情况要比按钮复杂得多,所以不要告诉我用angular制作按钮的更好方法。
当为指令选项添加scope属性时,它为指令创建了隔离的作用域,你也需要在指令内部传递testt函数,或者在指令内部定义testt函数链接函数
<mydirective dirarg={{value-1}} testt="testt"></mydirective>
app.directive('calendar',function($compile){
return{
scope:{
dirarg: '@',
testt: '='
},
link: function(scope, element, attributes){
element.append($compile("<button ng-click='testt()'>"+scope.dirarg+"</button>")(scope));
}
}
});
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 使用Express捕获参数
- 参数变量出现ngTable指令问题
- AngularJS:我可以跳过函数参数回调吗
- 如何使用skip参数使用angular ui引导进行服务器端分页
- 要求未定义JS回调参数
- 我的jQuery插件参数没有正确启动,遇到了问题
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- jquery设置为使用参数运行
- Javascript”;类“;带有参数的扩展
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 函数未将值作为参数传递
- 如何将参数传递到angularJs中的工厂
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- MVC 3页面导航和使用javascript传递参数
- 从查询字符串参数推断出正确的数据类型
- 传递包含'%的参数'在URL中
- 为什么不'我们在javascript中使用函数参数的数据类型
- 在Angular链接函数和访问指令参数中使用$compile