2011-12-07 28 views
2

我有一個由小鬍子模板(以及javascript和jquery)驅動的頁面,我無法弄清楚如何將函數插入到此模板中。基本上我想要的是當用戶點擊它時,在執行功能的頁面上添加一個鏈接或按鈕「onTaskSelected(taskId)」。我一直在尋找一種方法來實現這一點,現在已經有好幾天了,而且大量的鬍鬚文檔/支持/示例很難找到。有誰知道這可以做到嗎?在小鬍子模板中的點擊事件中執行函數

編輯 - 下面是一些代碼,我試過:

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+'"]') 

希望這有助於ü在未來。

順便說一句 - 我自己還在尋找一個解決原來的問題...

+0

是啊,我不知道這種形式在我寫我的上述回答的時間選擇,但我會更新它,謝謝。如果你面臨與OP相同的問題,我認爲你最好走出我在答案中發佈的路線,很可能。 – Axle