这似乎不起作用:
<a href="#ThisSweetConversationYouOpened" ng-click="OpenChat(returnNotmyID(19,20))">
请帮忙
谢谢
修改 我还没有找到合适的答案。因此找到了一种有效的替代方案。
<a href="#ThisSweetConversationYouOpened" ng-init="message.Interlocuter = returnNotmyID(19,20)" ng-click="OpenChat(message.Interlocuter)">
但如果有人知道,那么问题仍然是开放的,请帮助
答案 0 :(得分:0)
您必须将函数调用嵌套到另一个不带参数的函数中。
<a href="#ThisSweetConversationYouOpened" ng-click="function(){OpenChat(returnNotmyID(19,20))}">
答案 1 :(得分:0)
传递一个像你这样调用你的函数的函数:
ng-click="OpenChat(function(){ returnNotmyID(19,20); })"
注意:您可以根据需要使用无限函数的参数(如果有的话)(如果您愿意,也可以将它们传递给returnNotmyID
。)
修改强>
如果要返回returnNotmyID
的值,请使用此:
ng-click="OpenChat(function(){ return returnNotmyID(19,20); })"
答案 2 :(得分:0)
您可以将带有参数的函数名称作为字符串传递给父函数,该函数将使用参数动态调用子(或内部)函数。
<a href="#ThisSweetConversationYouOpened" ng-click="OpenChat('returnNotmyID', 19, 20)">
在你的控制器中:
$scope.OpenChat = function (name, var1, var2)
{
//check if the provided function name is actually a function in $scope
if(angular.isFunction($scope[name]))
$scope[name](var1, var2); //call the inner function
}
//inner function
$scope.returnNotmyID = function(a, b)
{
alert("Called: "+ a + " - b: "+ b)
}
作为参考,我创建了this fiddle。
答案 3 :(得分:0)
您可以将函数和参数作为回调传递。与Ali Baig的回答非常相似。
这可以成为保持模块性的有用工具,特别是在您希望将控制器逻辑发送到指令以供执行的情况下。
链接:
<a href="#ThisSweetConversationYouOpened" ng-click="OpenChat_ALTERNATIVE(returnNotmyID, 19, 20)"> Alternative </a>
控制器:
function SimleController($scope) {
$scope.result = '';
$scope.returnNotmyID = function(a, b) {
return a + b;
};
$scope.OpenChat_ALTERNATIVE = function(passedFunction, arg1, arg2) {
$scope.result = passedFunction(arg1, arg2);
};
}
这是一个有效的fiddle。
答案 4 :(得分:0)
您只需要将OpenChat
和returnNotmyID
定义为普通的角度函数。
$scope.OpenChat = function(fn) {
fn && fn();
}
$scope.returnNotmyID = function(a, b) {
alert("a + b = " + (a+b));
}
演示: https://codeide.co/hHezFzaL
可以吗?