javascript - 如何从带参数的指令调用 Angular Controller 作用域函数?

标签 javascript angularjs angularjs-directive

这与堆栈上的其他问题略有不同,因为我需要使用仅存在于我的指令中的参数来调用 Controller 的函数。

指令(标记):

<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>

Controller 内部的功能:

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

所以问题是,在指令 param.abs 中解析得很好,但是在被调用的作用域函数中,参数为空!我究竟做错了什么?如何获取参数才能通过?

最佳答案

您需要确定将在标记中指定的函数参数的标准名称(在您的示例中,您使用了 x )。然后,您可以在指令的隔离作用域中创建一个函数,该函数将调用 doSomething()方法如下:

指令链接功能:

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

然后只需将指令内的标记更改为:

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

现在您的标记调用 ( <div do-something="doSomething(x)"></div> ) 和 Controller 内的函数将正常工作。

关于javascript - 如何从带参数的指令调用 Angular Controller 作用域函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22975891/

相关文章:

angularjs - 我可以在 MEAN 应用程序中使用 Firebase 吗?

Javascript 变量不适用于 MYSQL

javascript - 使用 gulp 构建 extjs

javascript - 用ajax json根据 `id`获取数据的值

javascript - 从 div 标签中选择元素

angularjs - AngularJS 中的搜索引擎优化

javascript - Angular : redirecting/#%21/to/#!/

javascript - 在其他域的 div 中包含一个 Angular 应用程序,没有 iframe

javascript - ngRepeat 中的第一个 ngModel 被分配了自定义指令

html - `ngDisabled` 的反义词是什么?