Angular - 在ng-click上从控制器运行功能

时间:2015-12-20 15:25:44

标签: javascript angularjs

我想在加载指令时运行一些函数,然后能够重新运行"再次使用ng-click。我的代码如下:

const app = angular.module('app', []);

class dummyController {
    logIt() {
        console.log('logging');
    }
}

app.directive('dummyDir', () => {
    return {
        controller: dummyController,
        link(scope, element, attrs, ctrl) {
            scope.logIt = ctrl.logIt();
            scope.logIt;

        }
    };
});

HTML

<div ng-app="app">
    <button class="reinit" type="submit" dummy-dir ng-click="logIt()">Reinit</button>
</div>

CodePen

不幸的是,单击按钮不会执行任何操作。我做错了什么?

2 个答案:

答案 0 :(得分:4)

在这一行

scope.logIt = ctrl.logIt();

您实际上正在调用logIt函数并将此函数的结果分配给变量logIt。该函数不返回任何内容,因此结果未定义。

相反,您需要为函数指定变量指针,以便稍后使用它:

link(scope, element, attrs, ctrl) {
    scope.logIt = ctrl.logIt;    // assign a function, do not invoke it
    scope.logIt();               // invoke the function
}

答案 1 :(得分:-1)

class dummyController {
    logIt() {
        console.log('logging');
    }
    logIt();

}