2017-06-18 101 views
0

剛剛開始使用angular,並且努力讓ngClick運行。

我有堆棧溢出了大多數潛在的解決方案,但都指代必須使用$ scope才能使ngClick工作。

但是,我知道你不需要這個,只要你所在的頁面有正確的控制器分配給它('控制器爲'方法),因此只要你的功能在這個控制器內,它應該工作。

但是,我很努力地讓我的代碼開火 - 沒有錯誤回來,所以我可以調試。

這裏是我的設置如下:

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> 

我知道我錯過了一個菜鳥錯誤,但嚴重不能發現它是什麼,我錯過了。

非常感謝您提供的任何燈光。

ķ

+0

嘗試'NG點擊= 「exampleShow.addExample()」' – Akis

回答

1

,所以你需要將控制器功能結合到this,你必須用別名html也呼籲同,像:ng-click="exampleShow.addExample()"

演示:

var myApp = angular.module('myApp', []); 
 

 
myApp.controller('ExampleShowController', ExampleShowController); 
 

 
ExampleShowController.$inject = []; 
 

 
function ExampleShowController() { 
 
    const exampleShow = this; 
 
    exampleShow.addExample = function() { 
 
    console.log('click'); 
 
    } 
 
}
<script src="https://code.angularjs.org/1.5.2/angular.js"></script> 
 
<div ng-app="myApp" ng-controller="ExampleShowController as exampleShow"> 
 
    <button ng-click="exampleShow.addExample()" class="u-full-width button-primary">Add example 
 
    </button> 
 
</div>

+1

嘿人 - 謝謝你sooo - 偉大的答案,並容易理解,不使用$範圍!不能相信我錯過了,但工作完美 - 一切順利! –

0

你沒有注入在控制器$scope。你的NG-點擊功能應該是範圍的一部分,如果你想由於您使用controller as語法,使用它在模板

相關問題