如何传递包含参数作为参数的JavaScript函数

时间:2017-01-28 19:53:43

标签: javascript angularjs

这似乎不起作用:

<a href="#ThisSweetConversationYouOpened" ng-click="OpenChat(returnNotmyID(19,20))">

请帮忙

谢谢

修改 我还没有找到合适的答案。因此找到了一种有效的替代方案。

<a href="#ThisSweetConversationYouOpened" ng-init="message.Interlocuter = returnNotmyID(19,20)" ng-click="OpenChat(message.Interlocuter)">

但如果有人知道,那么问题仍然是开放的,请帮助

5 个答案:

答案 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)

您只需要将OpenChatreturnNotmyID定义为普通的角度函数。

$scope.OpenChat = function(fn) {
    fn && fn();
}
$scope.returnNotmyID = function(a, b) {
    alert("a + b = " + (a+b));
}

演示: https://codeide.co/hHezFzaL

可以吗?