2016-06-12 3 views
0

私のプロジェクトでAngularをピックアップしていますが、最初のステップを正しく実行できません。AngularJS 1.5コンポーネントテンプレートのng-clickは起動しません。

具体的には、コンポーネントと適切なテンプレートを使用して表示するアイテムのリストを取得できますが、コンポーネントモデルを使用してng-clickイベントをトリガーする方法を理解できません。これに類似した多くの問題がSOに答えられましたが、私は進歩なしに多くの修正と提案に従っており、助言が必要です。

file: customerList.js 
function CustomerListController($scope, $element, $attrs, $http) { 
    this.customerList = [ 
     { name: 'Arya' }, 
     { name: 'No One' }, 
    ]; 

    this.yell = function(customer) { 
     console.log("customer customer, we've got a click"); 
    }; 
} 

angular.module('myApp').component('customerList', { 
    templateUrl: 'customerList.html', 
    controller: CustomerListController, 
}); 

とそのテンプレート:

file: customerList.html 
<div class="customer" 
    ng-repeat="customer in $ctrl.customerList" 
    customer="customer" 
    ng-click="$ctrl.yell(customer);"> 
     Welcome home, {{customer.name}}! 
</div> 

私はng-click="console.log('click detected');"を設定した場合でも、私はコンソールログを取得していません。

これは診断には十分な情報だと思いますが、もっと必要な場合はお知らせください。

ありがとうございます!

+0

私は、customerListにプッシュして自分のページの更新を見て、私のconsole.logステートメントが完全に無視されているということを発見しました。これは私の質問です。私は$ logとその様々なメソッドを使って試してみました。そして、$ logProviderを介してデバッグを有効にし、$ log.debugのメッセージを送ります。私の角度のアプリケーションがウィンドウへの参照を失ったようですね? – jkrone

答えて

1

まず、console.logは、角度表現では直接動作しません。ウィンドウ関数を式で直接使用することはできません。

第2に、新しい学校の方法であるため、controllerAsという構文を使用することをおすすめします。 ng-click()式でcontrollerAsエイリアスを使用してコントローラにアクセスしてみてください。

+0

窓機能のおかげで、ありがとう! 私は$ ctrlがcontrollerAsのデフォルトであると読んでいました。テストして報告します。 – jkrone

+0

エイリアシングによってコントローラのyellメソッドを起動できませんでした。私はページのリストを作成していますので、controller.customerList配列にアクセスできます。それは拘束力のある問題でしょうか? – jkrone

+0

私が言うことができる限り動作するはずです:http://plnkr.co/edit/Kpnknj743Uq6CNSCJwOV?p=preview – GBa

関連する問題