2017-03-10 17 views
0

ng-repeatが入力された単純な順序付けされていないリストがあり、ユーザがリスト項目の1つをクリックするたびに何か起こりたいと思います。しかし、ng-clickはHTML内のdivのいずれかと連携しているようではなく、ボタンでのみ動作します。最初は問題がng-repeatであると思っていましたが、ng-repeat ng-clickの外でさえ動作しないようです。私もng-mousedownを使用しようとしましたが、どちらもうまく動作していないようです。これは、同様のdivの外に、私は別のdivをラップしようとしたが、それはまだ動作しませんでしたng-clickは自分のdivで動作していません

<div class="noteItem" ng-mouseleave="btnShow = false" ng-mouseenter="btnShow = true" ng-click="alert('click');"> 
    <li> 
     {{note.subject|removeHTML}}<a ng-show="btnShow" ng-click="deleteNote(note._id)"><i>DELETE</i></a> 
    </li> 
</div> 

は、ここに私のhtmlです。私は約1時間この問題に立ち往生しています。

+0

は私たちにあなたがfuncion 'deleteNote'を定義するコントローラを表示します。空のhrefを指定することもできます。 https://docs.angularjs.org/api/ng/directive/ngHref – Rumpelstinsk

+0

アラートを表示することを期待している場合は、間違っている可能性があります。 '$ scope.alert'関数を定義して警告を発するのは、 – Ladmerc

+0

うわー、私はとても馬鹿だと感じています。ありがとうございます。それは長い夜だった... –

答えて

0

divにng-clickがあり、<a>要素でも実行されています。実行中のものはdivのng-clickではなく<a>です。

このようにdivを追加して、クリックしてみてください。

<div ng-click="yourScopeMethodHere()">click me</div> 

ところで、ng-clickで直接JS alert()を呼び出すことはできません。

+0

いいえ、それは間違っています。 **両方でtrigerredされます**。 – Mistalis

0

クリックが実行されると、スコープの関数と式が検索されます。アラートやコンソールログにはどちらも記録されないので、このように実行されることはありません。スコープ関数を作成し、その関数内でアラートを呼び出すことができます。

0

親要素(<div>)にng-clickがあるので、クリックはでがトリガーされます。子供の親ng-click$event.stopPropagation()でキャンセルすることができます。サイドノートとして

<div ng-mouseleave="btnShow = false" ng-mouseenter="btnShow = true" ng-click="alert('click');"> 
    <li> 
     {{note.subject|removeHTML}} 
     <a ng-show="btnShow" ng-click="$event.stopPropagation(); deleteNote(note._id)"><i>DELETE</i></a> 
    </li> 
</div> 

あなたがJavaScriptの基本的な警告を開くことを望んでいるならば、ng-click="alert('click')は、$scope.alert()を求めるだろう... ;-)

関連する問題