2016-12-20 10 views
-1

私はAngularJSを初めて使用しています。だから、そんなばかげた質問のためにお詫び申し上げます。ボタンをクリックしたときの指示を非表示にして表示する

ボタンのクリックに基づいて指示を表示/非表示にしたい。

<body ng-app="app" ng-controller="appCtrl"> 
    <nav class="navbar navbar-default"> 
     <div class="container-fluid"> 
      <div class="navbar-header"> 
       <a class="navbar-brand" href="#">Welcome to the world of directives!</a> 
      </div> 
      <ul class="nav navbar-nav"> 
       <li ng-repeat="fruit in fruits" ng-clicked="itemClicked(fruit.label)" style="cursor:pointer"> 
        <a>{{fruit.label}}</a> 
        <my-div></my-div> 
       </li> 
      </ul> 
     </div> 
    </nav> 
    <script> 
     var app = angular.module('app',[]); 
     app.controller('appCtrl',function($scope){ 
      // Fruits 
      $scope.fruits = [{ 
        label:"Apple" 
       },{ 
        label:"Orange", 
       },{ 
        label:"Grapes" 
       }]; 
     }); 

     app.directive('myDiv',function(){ 
      return { 
       restrict: 'E', 

       link : function(scope,elem,attrs){ 
        scope.itemClicked = function(value){ 
         alert('myDiv clicked : ' + value); 
        } 
       } 
      } 
     }); 
    </script> 
</body> 

Whenever a link in clickedは、私が指示機能から来てshow the alert with the respective fruit nameしたいです。

ただし、コンソールにエラーはありません。

私には何が欠けていますか?

説明をお願いします。

+3

以下のようにコントローラでそれを定義するディレクティブで関数を定義します。あなたはng-clickedを使っていますが、それを一度変更して動作するかどうかを確認してください。 – GeekAb

+0

くそー!それは単にタイプミスでした。私を修正してくれてありがとう。 – StrugglingCoder

+0

あなたはこの指令で何かをしようとしていますか?あなたはまったくそれを必要としません。 '$ scope.itemClicked'関数をあなたのコントローラに入れてください。 –

答えて

0

の代わりにそれはNG-クリックしてはいけません

app.controller('appCtrl',function($scope){ 
    // Fruits 
    $scope.fruits = [{ 
      label:"Apple" 
     },{ 
      label:"Orange", 
     },{ 
      label:"Grapes" 
     }]; 

    $scope.itemClicked = function(value){ 
     alert('myDiv clicked : ' + value); 
    } 
}); 

And also change ng-click="itemClicked(fruit.label)" in your html as well. 
関連する問題