ng-repeatで作成されたボタンをコントローラの特定の関数にマップしたいという問題があります。angleJS ngイベントの式による関数呼び出し
$scope.sections = [
{
title: 'Music',
desc: 'Some examples of electronic music I have produced using Fl Studio.',
color: '#76a86f',
icon: 'img/icon/music.png',
onClick: 'clickMusic()'
}];
機能は次のように定義されています:
$scope.clickMusic = function() {
hideAll();
document.getElementById("musicContent").classList.remove("hide");
document.getElementById("musicContent").classList.add("show");
};
そして、このようなHTMLボタンに機能をマップしよう:
<div ng-repeat="section in sections">
<div class="sectionThumbnail"">
<button ng-click="section.onClick">
<img ng-src="{{ section.icon }}" id="sectionnail_{{$index}}" ng-mouseover="sectionhoverIn($index)" ng-mouseleave="sectionhoverOut($index)">
</button>
<div class="sectionthumbnailInfo">
<p class="sectiontitle">{{ section.title }}</p>
{{ section.desc }}
</div>
</div>
</div>
私はこのような関数名の文字列を定義しています
ただし、ボタンをクリックしても何も起こりません。私はclickMusic()関数が一度実行されると意図したとおりに動作することを知っています。なぜなら私はウェブページ上の別のボタンに対して同じ機能を使用するからです。 ng-click = "clickMusic()"のように、ng-clickのclickMusic()関数を直接参照すると、それも機能します。私はコンソールにもエラーは表示されません。
このように配列から関数を参照する方法はありますか?または、繰り返しからインデックス引数をとり、インデックスを目的の関数にマップする追加の関数を作成する必要がありますか?
ありがとうございます! onClick: clickMusic
へ
私の場合、これは完全に正確ではありませんでしたが、私の関数は$ scope.clickMusic()として定義されています。私はあなた自身に基づいて私自身の答えを投稿しましたが、あなたがこの特定の場合に合うようにあなたの答えを編集するなら、私はそれを正しい答えとしてマークします。 ありがとうございました! –