Javascript AngularJS指令:将函数从控制器附加到ng click
我在尝试编写一个指令来生成一个通用工具提示时遇到了一些问题,该工具提示接受用户id作为参数,以及与该id关联的不同操作。每个操作在控制器中都有自己的方法和图标 这是HTMLJavascript AngularJS指令:将函数从控制器附加到ng click,javascript,angularjs,Javascript,Angularjs,我在尝试编写一个指令来生成一个通用工具提示时遇到了一些问题,该工具提示接受用户id作为参数,以及与该id关联的不同操作。每个操作在控制器中都有自己的方法和图标 这是HTML <tr ng-repeat="user in users" row-actions id="user.id" actions="[{'action': editUser ,'icon': 'edit'}, {'action': removeUser, 'icon': 'trash'}]"> <
<tr ng-repeat="user in users"
row-actions id="user.id" actions="[{'action': editUser ,'icon': 'edit'}, {'action': removeUser, 'icon': 'trash'}]">
<td>{{user.name}}</td>
<td>{{user.unit.name}}</td>
<td>{{user.roleName}}</td>
<td>{{user.active ? 'ACTIVE' : 'NON_ACTIVE' | translate}}</td>
</tr>
{{user.name}
{{user.unit.name}
{{user.roleName}
{{user.active?'active':'NON_active'| translate}
这是指令
myApp.directive('rowActions',['$compile', function($compile){
return {
restrict: 'A',
scope: {
id: '=',
actions: '='
},
link: function (scope, element, attr) {
var div = angular.element('<div class="row-actions"></div>');
for (var i=0; i < scope.actions.length; i++) {
div.append('<span class="row-action icon icon-' + action.icon + ' icon-white" ng-click="' + action.action + '(' + scope.id + ')' + '"></span>');
}
element.append(div);
$compile(element);
}
};
}]);
myApp.directive('rowActions',['$compile',function($compile){
返回{
限制:“A”,
范围:{
id:“=”,
操作:'='
},
链接:功能(范围、元素、属性){
var div=角度元素(“”);
对于(var i=0;i
基本上,方法是editUser和removeUser,我希望能够以editUser(user.id)等形式调用它们,但我无法将其编译。
我尝试将它们作为字符串('editUser')发送,在示例中,它们作为函数发送。两者都不起作用
请看一看,,
谢谢好吧,一个直接的问题是你从来没有定义过
动作
,所以action.icon
和action.action
在你的for
循环中会给你一个错误
但是,即使您将其更改为scope.actions[i].action
,这仍然不起作用,因为您在当前(隔离)作用域上没有editUser
属性
相反,我认为你需要这样的东西:
for (var i=0; i < scope.actions.length; i++) {
div.append('<span class="row-action icon icon-'
+ scope.actions[i].icon
+ ' icon-white"
+ ng-click="actions['+ i + '].action(' + scope.id + ')'
+ '"></span>');
}
好的,一个直接的问题是,您从未定义
操作
,因此操作图标
和操作
for循环中的操作将给您一个错误
但是,即使您将其更改为scope.actions[i].action
,这仍然不起作用,因为您在当前(隔离)作用域上没有editUser
属性
相反,我认为你需要这样的东西:
for (var i=0; i < scope.actions.length; i++) {
div.append('<span class="row-action icon icon-'
+ scope.actions[i].icon
+ ' icon-white"
+ ng-click="actions['+ i + '].action(' + scope.id + ')'
+ '"></span>');
}
好的,一个直接的问题是,您从未定义操作
,因此操作图标
和操作
for
循环中的操作将给您一个错误
但是,即使您将其更改为scope.actions[i].action
,这仍然不起作用,因为您在当前(隔离)作用域上没有editUser
属性
相反,我认为你需要这样的东西:
for (var i=0; i < scope.actions.length; i++) {
div.append('<span class="row-action icon icon-'
+ scope.actions[i].icon
+ ' icon-white"
+ ng-click="actions['+ i + '].action(' + scope.id + ')'
+ '"></span>');
}
好的,一个直接的问题是,您从未定义操作
,因此操作图标
和操作
for
循环中的操作将给您一个错误
但是,即使您将其更改为scope.actions[i].action
,这仍然不起作用,因为您在当前(隔离)作用域上没有editUser
属性
相反,我认为你需要这样的东西:
for (var i=0; i < scope.actions.length; i++) {
div.append('<span class="row-action icon icon-'
+ scope.actions[i].icon
+ ' icon-white"
+ ng-click="actions['+ i + '].action(' + scope.id + ')'
+ '"></span>');
}
以字符串形式接收操作。将此操作:'='
更改为操作:'@'
。如果这不起作用,请将PlunkReceive操作设置为字符串。将此操作:'='
更改为操作:'@'
。如果这不起作用,请将PlunkReceive操作设置为字符串。将此操作:'='
更改为操作:'@'
。如果这不起作用,请将PlunkReceive操作设置为字符串。将此操作:'='
更改为操作:'@'
。如果这不起作用,请设置一个劫掠器非常感谢您的回答。现在我将检查第一个方法,但是我发现使用第二个方法,我无法按照我的要求将模板附加到现有元素(请注意,它是通过属性使用的)。我的用例是在hover上显示。非常感谢您的回答。现在我将检查第一个方法,但是我发现使用第二个方法,我无法按照我的要求将模板附加到现有元素(请注意,它是通过属性使用的)。我的用例是在hover上显示。非常感谢您的回答。现在我将检查第一个方法,但是我发现使用第二个方法,我无法按照我的要求将模板附加到现有元素(请注意,它是通过属性使用的)。我的用例是在hover上显示。非常感谢您的回答。现在我将检查第一个方法,但是我发现使用第二个方法,我无法按照我的要求将模板附加到现有元素(请注意,它是通过属性使用的)。我的用例是在悬停时显示。