2017-06-18 16 views
0

角度を使用し始めて、ngClickを実行するのに苦労しました。

私は、潜在的なソリューションのほとんどがスタックオーバーフローしていますが、すべてが動作するためには$ scopeを使用する必要があります。

しかし、私が知っているのは、あなたが使っているページが正しいコントローラー(「コントローラー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> 

私はここでルーキーのエラーを逃していることを知っているが、真剣にそれが私が行方不明であることを見つけることができません。

ありがとうございました。

K

+0

'てみNGクリック= "exampleShow.addExample()"' – Akis

答えて

1

でそれを使用したい場合は、あなたのNG-クリック機能は、スコープの一部である必要があり、だから、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

ちょっと人 - $スコープを使わないとずっとすばらしい答えがあり、分かりやすくなってくれてありがとう!私はそれを逃したとは思えないが、完璧に働いた - すべて最高! –

0

あなたのコントローラーで$scopeを注入しませんでした。あなたはcontroller as構文を使用するためのテンプレート

関連する問題