角度-点击时从控制器运行函数
Angular - running functions from controller on ng-click
我想在加载指令时运行一些函数,然后能够使用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
不幸的是,点击按钮没有任何作用。我做错了什么?
在行中
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
}
class dummyController {
logIt() {
console.log('logging');
}
logIt();
}
相关文章:
- 在子控制器中触发时,Ionic AngularJS父动画未正确运行
- 在使用nodejs运行服务器端时,无法加载角度控制器文件
- EmberJS:将输入值绑定到控制器属性,并在更改时运行过滤器
- 如何在控制器外部和视图内在 AngularJs 中运行 jQuery
- AngularJS重新运行控制器
- 在控制台中列出正在运行的控制器实例及其 this 变量
- 在页面呈现之前运行 JavaScript 和控制器操作
- 在一个控制器 ui 路由器中的所有 $state.go() 事件之前运行 check
- 角度控制器功能未运行
- 除非刷新,否则 AngularJS 不会运行控制器
- 如何模拟在控制器初始化时运行的函数
- 只有在 AngularJS 中初始化完成后才运行控制器
- 单击按钮时运行控制器方法MVC4 C#
- 角度函数未在控制器中运行或绑定到$scope变量
- 推迟在应用程序运行angularjs上创建控制器/服务
- 路由加载时运行成员控制器函数以设置控制复选框的属性
- 角度-点击时从控制器运行函数
- ASP.NET MVC3-运行的每个选项卡中的控制器
- 在angular中,是否可以在控制器运行之前让指令将变量添加到范围中
- 具有独立于控制器运行的Angular$间隔