我想在加载指令时运行一些函数,然后能够重新运行"再次使用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>
不幸的是,单击按钮不会执行任何操作。我做错了什么?
答案 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();
}