Angularjs ngClick函数使用'不起作用;控制器组件';方法,而不是$scope

Angularjs ngClick函数使用'不起作用;控制器组件';方法,而不是$scope,angularjs,Angularjs,刚刚开始使用angular,并努力让ngClick运行 我的堆栈溢出了大多数潜在的解决方案,但都提到必须使用$scope才能使ngClick正常工作 但是,我知道,只要您所在的页面已为其分配了正确的控制器(“控制器as”方法),并且只要您的功能在该控制器内,它就应该工作,您就不需要此方法 然而,我正在努力让我的代码启动-没有错误回来,所以我可以调试 以下是我的设置: Angular version: 1.6.4 路由器.js state(‘exampleShow', { templateU

刚刚开始使用angular,并努力让ngClick运行

我的堆栈溢出了大多数潜在的解决方案,但都提到必须使用$scope才能使ngClick正常工作

但是,我知道,只要您所在的页面已为其分配了正确的控制器(“控制器as”方法),并且只要您的功能在该控制器内,它就应该工作,您就不需要此方法

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

以下是我的设置:

Angular version: 1.6.4
路由器.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>
添加
例子
我知道我错过了一个新手的失误,但我真的无法发现我错过了什么

谢谢你提供的任何信息


K

您没有在控制器中注入
$scope
。如果您想在模板中使用ng click函数,它应该是作用域的一部分,因为您使用的是
controller as
语法,所以您需要将控制器函数绑定到
这个
,并且您还必须在
html
中通过别名调用它,比如:
ng click=“exampleShow.addExample()”

演示:

var myApp=angular.module('myApp',[]);
myApp.controller(“ExampleShowController”,ExampleShowController);
示例ShowController.$inject=[];
函数示例ShowController(){
const exampleShow=这个;
exampleShow.addExample=函数(){
console.log('click');
}
}

添加示例

试试
ng click=“exampleShow.addExample()”
嘿,伙计,谢谢你这么好的回答,不用使用$scope也很容易理解!真不敢相信我错过了,但我做得很好——一切都很好!