2017-07-05 10 views
1

こんにちは、私はアプリを使って問題を解決しています。コンソールにチェックを入れましたが、エラーメッセージは表示されません。コントローラで機能を登録してもng-clickが発砲しない

コンポーネントを作成し、それを他のテンプレートに挿入しました。テンプレート自体が動作しています(ボタンがレンダリングされ、ng-click属性の要素があることが確認されました)が、ボタンをクリックすると表示されます。この関数は起動されません。

プロジェクトはavailiableここにある:https://github.com/Aozaki-Touko/webApplication-dota2hero/tree/master/app

navbar.component.js:

"use strict"; 

angular.module("navbar").component("navbar", { 
    templateUrl: "/navbar/navbar.template.html", 
    controller: [ 
    "$location", 
    function($location) { 
     var self=this; 
     self.changeToHeroes = function(){ 
     alert("Button Pressed!"); 
     $location.path("/heroes"); 
     }; 
    } 
    ] 
}); 

navbar.template.html:

<button type="button" ng-click="$ctrl.changePathToHeroes()">Heroes</button> 

navbar.module.js:

"use strict"; 

angular.module("navbar",[]); 
+1

。 – JEMI

+0

はい、それはタイプミスです。私はそれを変更しましたが、問題は残ります。 –

答えて

0

これは私のために働いている、でなければなりません。 関数名に問題があったようです。あなたのメソッド名はスペルミスされ

"use strict"; 
 

 
angular.module("navbar").component("navbar", { 
 
    templateUrl: "/navbar/navbar.template.html", 
 
    controller: [ 
 
    "$location", 
 
    function($location) { 
 
     var self = this; 
 
     function changePathToHeroes(){ 
 
     alert("Button Pressedddddd!"); 
 
     $location.path("/heroes"); 
 
     } 
 
     self.changePathToHeroes = changePathToHeroes; 
 
    } 
 
    ] 
 
});
<button type="button" ng-click="$ctrl.changePathToHeroes();">Heroes</button>

+0

はい...これは動作します。どうもありがとう! –

0

それは

<button type="button" ng-click="changePathToHeros()">Heroes</button> 
+0

はい、それはタイプミスです。私はそれを変更しましたが、問題は残ります。 –

+0

投稿者htmlにコントローラを記述した投稿 – Sajeetharan

+0

navbarコンポーネントを別の場所で使用しましたコントローラがコンポーネントファイルで宣言されているため、htmlファイルで明示的に宣言しませんでした。私はコンポーネントコントローラで変数を宣言し、{{variable}}をテンプレートで使用しようとしましたが、これは動作します。何らかの形で機能がクリックイベントに登録されていません。 –

0

使用controllerAs

angular.module("navbar").component("navbar", { 
    templateUrl: "/navbar/navbar.template.html", 
    controllerAs:"$ctrl", 
    controller: [ 
    "$location", 
    function($location) { 
     var $ctrl = this; 
     $ctrl .changeToHeroes = function(){ 
     alert("Button Pressed!"); 
     $location.path("/heroes"); 
     }; 
    } 
    ] 
}); 
+0

動作しません。 $ ctrlはコンポーネントのデフォルトです。コンポーネント のcontrollerAsを使用すると、デフォルトの$ ctrlが上書きされます。 –

関連する問題