簡體   English   中英

如何從帶有參數的指令調用角度控制器范圍函數?

[英]How to call angular controller scope function from directive with parameters?

這與堆棧上的其他問題略有不同,我需要使用僅在我的指令中存在的參數來調用我的控制器函數。

指令(標記):

<div do-something="doSomething(x)"></div>

指令(js):

var directive = function () {
    return {
        restrict: 'EA',
        templateUrl: '/angular/node-for-detail.html',
        scope: {
            doSomething: '&'
        }
    }
};

標記內部指令:

<span ng-click="doSomething('im not resolving')"></span>

控制器內的功能:

$scope.doSomething = function(myVar) { //myVar is null };

所以問題是,在指令param.abs里面解決得很好,但是在調用范圍函數里面,參數是null! 我究竟做錯了什么? 我怎樣才能獲得參數來完成它?

您需要確定將在標記中指定的函數的參數的標准名稱(在您的示例中,您使用了x )。 然后你可以在指令的隔離范圍中創建一個函數,它將調用doSomething()方法,如下所示:

指令鏈接功能:

$scope.runCallback = function (param) {
    $scope.doSomething({x: param});
}

然后只需將指令內的標記更改為:

<span ng-click="runCallback('im not resolving')"></span>

現在你的標記調用( <div do-something="doSomething(x)"></div> )和控制器內的函數將正常工作。

嘗試在指令中替換你的標記,如下所示:

<span ng-click="doSomething()('im not resolving')"></span>

和指令標記:

<div do-something="doSomething"></div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM