2011-12-07 7 views
2

ひげそりテンプレート(javascriptとjqueryとともに)によって駆動されるページがあり、このテンプレートに関数を挿入する方法を理解できません。基本的に私が望むのは、ユーザーがクリックすると、関数 "onTaskSelected(taskId)"を実行するリンクまたはボタンをページに追加することです。私は数日間これを達成する方法を模索してきました。広範な口ひげのドキュメンテーション/サポート/例は見つけるのが大変です。これがどのように成し遂げられるのか誰にでも分かりますか?ひげそりテンプレートのclickイベントで関数を実行する

編集 - ここで私が試したコードの一部です:

data["B" + task.taskId] = { 
    changeTask : function(taskId) { 
     var self = this; 
     self.onTaskSelected(taskId); 
    }, 
    taskId : task.taskId 
}; 

データは、その中に次のことを持っている口ひげテンプレート、上にロードされる:

<button onClick="{{#B8.changeTask}}B8.taskId{{/B8.changeTask}}">Change to task 8</button> 

私はしましたデータがテンプレートに送信されてhtmlに変換されるようにコードをデバッグし、B8がchangeTaskとtaskIdの両方を正しく設定しました。時間によって、HTMLが表示されているが、ボタンは次のようになります。

<button onclick>Change to task 8</button> 

なぜonclickのはしてやら取得され、そしてどのように私はそれを修正することができますか?ボタンである必要はありませんが、そのテキストを含むページ上にクリック可能な要素が必要です。

更新:次のように私は私のテンプレートを更新しましたので、:

<button onClick="{{#B8}}{{#changeTask}}8{{/changeTask}}{{/B8}}">Change to task 8</button> 

どうやら私は「B8」オブジェクト内の変数にアクセスするために、巣に自分のデータテンプレートを必要としていました。しかし、今私が持っている問題は、テンプレートからhtmlを作成するときに "changeTask"関数を実行しようとしていることです。ボタンをクリックするまで、どのように実行するのを待つことができますか?

答えて

1

最終的には機能しましたが、全く別のルートになってしまいました。他の誰かが同じ問題を抱えている場合に備えて、ここに投稿したいと思っていました。 onClickメソッドを挿入しようとするのではなく、ボタンに名前を付けるように口頭で書式を設定してから、jqueryを使用してDOMのそのセクションのすべてのボタンを循環させ、正しい名前を持つボタンにonClickメソッドを追加しました。

編集:技術的には、ボタンをリンクに変更しました。これについては、以下のコードでも説明しますが、ボタンでも機能するはずです。

テンプレート:

<a name="{{{B8}}}">Change to task 8</a> 

jQueryの(部分的な例):

$('a[name="' + buttonData[B8].name + '"]').click(function() { 
    self.onTaskSelected(buttonData[B8].taskId); 
}); 

希望他人のために有用です。

0

あなた自身の答えは本質的に正しいですが、jQueryを使って選択する簡単なオプションがあります:

$(link+'[name|="'+buttonData[B8].name+'"]') 

が、これは将来的にuのに役立ちます願っています。ところで

- 私自身はまだ元の問題への解決策を探しています...

+0

いや、私は上記の私の答えを書いた時点で、セレクタの形式については知りませんでしたが、私は更新しますそれ、ありがとう。あなたがOPと同じ問題に直面しているなら、私はあなたが答えに投稿したルートに行くのが最善だと思います。 – Axle

関連する問題