2013-07-24 47 views
0

我使用Kendo UI(最新版本)與Knockout-Kendo(0.6.3)和Knockout(2.3.0),我有一個複雜的情況與自動完成,我試圖將輸入到自動填充字段(數字字符串)的輸入映射到Javascript後端的複雜數據類型。在Kendo UI中使用Knockout模板的正確方法使用Knockout-Kendo的自動完成控件

我不認爲所有的細節都在這一點上是相關的,因爲我的問題是如何正確使用任何Kendo UI控件而非網格命名的Knockout模板(因爲我有這個工作)。本質上,我試圖根據輸入到自動完成中的輸入來設置自動填充建議下拉式樣。

基本上我已經試過這樣:

<input data-bind="kendoAutoComplete: { data: paymentSubCodeCodeList, value: paymentSubCodeCode, template: { name: 'mail_mailPaymentEntry-section_subcode-autocomplete', data: paymentSubCodeCode } }" /> 

但這鎖定了,並拋出一個JavaScript淘汰賽錯誤說對象不支持「替換」。

我也試過

template: $('#mail_mailPaymentEntry-section_subcode-autocomplete').html() 

template: '<div>#: data #</div>' 

的第一個作品,以創建一個模板,但我不能訪問任何數據淘汰賽。第二個適用於數據,但數據只是我選擇的值,我需要訪問相關的ViewModel。

有意義嗎?

回答

0

我不確定knockout-kendo是否支持柵格以外的其他事物的挖空模板。

你可以寫一個自定義綁定這使得模板但是

ko.bindingHandlers.myBinding = { 
    update: function(element, valueAccessor, allBindingsAccessor) { 
     var accessor = valueAccessor(); 
    //do cool stuff 
     ko.renderTemplate("myTemplate", accessor, {}, element, 'replaceNode'); 
    } 
}; 

如果劍道模板將由於這裏是使用它們的例子:

http://jsfiddle.net/GQqwY/72/


選擇:

var ViewModel = function() { 

this.choices = ko.observableArray([{Id:1,Name:'Andrew'},{Id:2,Name:'John'},{Id:3,Name:'Doe'}]);

this.selectedChoice = ko.observable(); 

this.templ = kendo.template('<div style="color:blue">#= Name #</div>'); 

};

ko.applyBindings(new ViewModel());

+0

那麼這解釋了很多,並停止拉扯頭髮。我仍然試圖找到另一種方式來顛覆這一點,但第一個是另一個很好的選擇。如果可能的話,我寧願不要與Kendo模板混合搭配。 – Philethius

+0

我正在查看變更集以添加對網格的淘汰模板支持:https://github.com/kendo-labs/knockout-kendo/commit/26e21c4c0666393e6e863302b16e618e86a3d3e1。你可能可以使用自動完成,閱讀代碼.. –

+0

我也會看看,謝謝! – Philethius

0

Knockout將接受您在實際窗口小部件上提供的所有選項。

您可以加入模板選項:

<input data-bind="kendoDropDownList: { dataTextField: 'name', dataValueField: 'id', data: choices, value: selectedChoice, template: '<span>Name: #: data.name # </span>' }" />

下面是來自尼邁耶的例子:http://jsfiddle.net/rniemeyer/jgs9H/

+0

這已經有一段時間了,但我認爲我的觀點是使用Knockout風格的模板而不是Kendo語法。 – Philethius

+0

敲除式模板綁定不可用,但您也可以使用Kendo模板實現其優點。您傳遞給模板的數據應該是一個淘汰賽屬性。 –