2014-01-29 77 views
0

我使用Telerik的Kendo UI及其autocomplete小部件和它們的MVVM框架,並且在獲取一個框以將檢索(和選定)對象設置爲綁定對象查看模型。例如...沒有設置綁定的對象

var viewModel = kendo.observable({ 
    Context: {} 
}); 

$("#context").kendoAutoComplete({ 
    dataTextField: "Name", 
    dataValueField: "Id", 
    delay: 800, 
    dataSource: { 
     dataType: "json", 
     serverFiltering: true, 
     transport: { 
      read: { 
       url: "/search/data", 
       data: function (data) { 
         return { 
         term: data.filter.filters[0].value 
        } 
       } 
      } 
     } 
    } 
}).data("kendoAutoComplete"); 

然後我使用下面的HTML;

<input data-val="true" 
     id="context" 
     name="context" 
     placeholder="Context" 
     type="text" 
     data-bind="value: Context" /> 

這命中一個控制器操作,返回以下內容;

[ 
    { 
    Id: "items/1", 
    Name: "Item 1", 
    Label: "Item 1 Label" 
    }, 
    { 
    Id: "items/2", 
    Name: "Item 2", 
    Label: "Item 2 Label" 
    }, 
    { 
    Id: "items/3", 
    Name: "Item 3", 
    Label: "Item 3 Label" 
    } 
] 

然而,當我使用自動完成搜索之後選擇對象時,Context財產在我的視圖模型仍然null

我可以通過添加一個特定的select函數來規避這個問題。

select: function(e) { 
    var dataItem = e.sender.dataItem(e.item.index()).toJSON(); 
    // update the model 
    viewModel.set('Context', dataItem); 
} 

但我真的寧願只是它的工作就像它應該;有什麼建議麼?

回答

1

問題是,您將viewModel定義爲Observable對象,但您沒有將其綁定到input

嘗試增加如下結合:

kendo.bind($("#context"), viewModel); 

這裏檢查它:http://jsfiddle.net/OnaBai/DYVLT/

+0

是的,我有一個代碼;對不起,我只是假定它被理解爲行爲​​的一部分。頁面中還有其他綁定,並且它們都可以正確綁定。 – Ciel

+0

但是我隱藏在答案中的JSFiddle是否適合你? – OnaBai

+0

這仍然不會將屬性設置爲實際選定的項目;您的示例僅獲取文本的實際標籤。 – Ciel

相關問題