2016-10-10 82 views
0

我有一個自定義的jquery插件,用於爲搜索框創建下拉html。 在裏面,html創建如下。如何使用自定義jquery插件中的鏈接屬性創建html?

$.each(stack, function (i, stackItem) { 
        var url = _getItemURL(stackItem, lang); 

        if (stackItem.INS !== undefined) { 
         html += '<li class="row"> <a href="' + url + '">' + stackItem.DS_HIGHLIGHTED + ' - ' + stackItem.E + '<br>' + stackItem.TICKER_DESC + '</a> </li>'; 
        } else { 
         html += '<li class="row"> <a href="' + url + '">' + stackItem.COMPANY_DESC_HIGHLIGHTED + '<br>' /*+ _getCountry(stackItem.CC, lang)*/ + '</a> </li>'; 
        } 
        itemCount++; 
       }); 

正如您所見,href屬性用於在此html中創建鏈接。但是當用戶點擊這些鏈接時,應用程序將重新加載瀏覽器頁面。我希望它正確HBS文件映射到不同的路線,在應用程序中類似如下

<li> {{#link-to 'stock-overview' 'en' 'tdwl' '1010'}}Stock{{/link-to}} </li> 

我怎麼能生成html像以前的Java腳本代碼內。

感謝任何幫助嗎?

回答

1

首先,我會建議你考慮一下,如果你確實需要這個jQuery插件或者可以使用簡單的燼寶解決方案。有一些漂亮的花式插件,如ember-power-select

但如果你真的想這樣做,你要明白,一個{{#link-to}}不僅產生<a>標籤,但只能處理上的點擊費用,然後做一個transitionTo

所以不行,當你簡單地將HTML附加到DOM時,不可能做到這一點。您必須手動捕獲<a>標籤上的click事件,然後觸發轉換。這取決於你如何將html注入到DOM中。

有一兩件事你可以做的是爲每個<a>標籤的獨特id你插入HTML到DOM後找到<a>標籤由id和附加onclick事件。

更好的方法是創建DOM而不是HTML,因此手動調用document.createElement然後附加click事件。

要觸發你可以做這樣的事情有注射所有者(如組件)的任何物體內部的過渡:

Ember.getOwner(this).lookup('controller:application').transitionToRoute('stock-overview', 'en', 'tdwl', '1010'); 

但是乾淨的最好的辦法是去一個餘燼車把模板一個{{#each}}循環,而不是jQuery解決方案。告訴你如何做到這一點,但我們需要更多的信息。所以最好的方法是,您可能會問一個新問題並準確解釋您想要達到的目標,現在問一個問題,您可能會遇到另一個問題的錯誤解決方案。

相關問題