2017-01-28 150 views
0

這似乎不工作的JavaScript函數:如何傳遞包含參數參數

<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

這應該工作。你確定'returnNotmyID'在範圍內嗎? –

+0

@eric_s這不起作用。它會立即調用'OpenChat'函數調用。 –

+0

您是否嘗試過我的答案? –

回答

0

你有你的嵌套函數調用到另一個函數,它沒有參數。

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

+0

這不太工作 – TSR

0

傳遞調用函數像這樣的anonimous功能:

ng-click="OpenChat(function(){ returnNotmyID(19,20); })" 

注:你可以帶參數,你玩(如果有的話)anonimous功能像(如果你喜歡,你可以將它們傳遞給returnNotmyID)。

編輯:,如果你想返回的returnNotmyID使用價值這個

ng-click="OpenChat(function(){ return returnNotmyID(19,20); })" 
+0

不完全。這將立即調用'OpenChat'。 –

+0

@ScottMarcus我仍然困惑他想通過哪個功能? –

+0

它不起作用 – TSR

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

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

0

您只需將OpenChatreturnNotmyID定義爲正常角度函數即可。

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

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

是否確定?