ngClick函数无法使用'controller as'方法而不是$ scope

时间:2017-06-18 16:19:20

标签: angularjs

刚刚开始使用角度,并努力让ngClick运行。

我的堆栈溢出了大多数潜在的解决方案,但都指的是必须使用$ scope才能使用ngClick来工作。

但是,我知道你不需要这个,只要你所在的页面分配了正确的控制器('controller as'方法),因此只要你的功能在这个控制器内它应该工作

然而,我正在努力让我的代码全部启动 - 没有错误回来,所以我可以调试。

以下是我的设置:

Angular version: 1.6.4

Router.js

state(‘exampleShow', {
  templateUrl: '/templates/example.html',
  controller: ‘exampleShowController as exampleShow'
})

controllers.js

exampleShowController.$inject = [‘Example’, '$state', 'User'];
function exampleShowController(Example, $state, User) {
 const exampleShow = this;

 function addExample() {
  console.log('click');
 }

}

example.html的

<button ng-click="addExample()" class="u-full-width button-primary">Add 
example</button>

我知道我在这里错过了一个菜鸟错误,但严重无法发现我错过了什么。

感谢您对此有所了解。

ķ

2 个答案:

答案 0 :(得分:1)

由于您使用controller as语法,因此您需要将控制器函数绑定到this,并且您必须通过html中的别名调用它。,例如:{{1} }

演示:

&#13;
&#13;
ng-click="exampleShow.addExample()"
&#13;
var myApp = angular.module('myApp', []);

myApp.controller('ExampleShowController', ExampleShowController);

ExampleShowController.$inject = [];

function ExampleShowController() {
  const exampleShow = this;
  exampleShow.addExample = function() {
    console.log('click');
  }
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您没有在控制器中注入$scope。如果要在模板

中使用,则ng-click功能应该是范围的一部分