角度:创建可以调用作用域函数的自定义指令
Angular: creating a custom directive that can call a scope function
我想创建一个自定义指令(我们称之为MyDragSource(,它可以通过在作用域上调用函数来获取其"拖动上下文",如下所示:
<div my-drag-source drag-context="getDragContext">
在本例中,getDragContext 是在作用域上定义的函数:
$scope.getDragContext = function() { // return drag source }
我希望在拖动操作开始时延迟调用getDragContext,而不是预先评估。我该怎么做?
在我的自定义指令中,我尝试了以下内容:
$scope.$eval($attrs.dragContext);
但是,这不会产生预期的结果。
将函数作为指令上的属性传递:
<div my-drag-source drag-context="getDragContext()" >
在指令中使用隔离作用域,并使用 &
导入dragContext
,它将 scope 属性定义为返回在父作用域中评估属性内容的结果的函数(在本例中为 $scope.$parent.$eval(attrs.dragContext)
(:
scope: {
dragContext: '&'
}
然后,您可以随时在函数中调用该函数link
:
$scope.dragContext()
如果传递的方法不带括号,您仍然可以从 link
函数调用它,您只需要通过添加另一组参数来调用该函数:
$scope.dragContext()()
你可以
这样称呼它:
var data = $scope[$attrs.dragContext]();
例
相关文章:
- 自定义函数中的光标位置
- Google Sheet自定义函数返回0
- 在JavaScript中调用函数时自定义此选项
- 使用drupal中自定义javascript文件中的一个函数
- 其中是自定义函数中的属性
- $resource上带有.then()函数的角度自定义方法导致错误
- 创建自定义函数以在函数上运行完整的多选下拉列表
- 在JavaScript中定义自定义对象和函数(第2部分)
- Google Sheets自定义函数条件格式
- 在JavaScript中定义自定义对象和函数
- 想要将ng个repeat对象传递给自定义筛选函数
- dalek回调或自定义函数
- 从sql填充Jqgrid的自定义Add函数中的下拉数据
- ExtJS 4-自定义排序函数只在点击列标题后执行
- 使用谷歌地图:一个返回undefined的自定义javascript函数
- AngularJS typeahead添加了按函数自定义排序
- JavaScript函数-自定义小部件- Appcelerator合金
- jQuery函数自定义组装回调
- JS-构造函数(自定义库)中的JSON/ARRAY传递变量
- 理解Javascript构造函数:自定义create方法