1

剣道ノックアウトを使用しています。

オートコンプリートをリモートデータにバインドしようとしています。http://rniemeyer.github.com/knockout-kendo/web/AutoComplete.htmlの基本的な例を使用して、次のことを試しました。ただし、入力がフォーカスを失うまで検索は更新されません。

検索」は、すでにobservableArrayにある場合にのみ何かを検索します。

剣道オートコンプリートで提供される唯一のイベントは「変更」です。これは、入力がフォーカスを失った後にのみ発生します。

キーの押下をどのようにインターセプトし、search()の値にアクセスして、リモート呼び出しを行えるようにしますか?

さらに、アイテムが選択されたら、どのようにして「id 」の値にアクセスしますか?

ありがとうジェレミー

<strong><p style="margin-top: 100px;" data-bind="text: search"></p></strong>

<input data-bind="kendoAutoComplete: { data: choices, value: search,  
dataTextField: 'name',  valueUpdate: 'afterkeydown' }" />

<script type='text/javascript'>
$(function () {
    var myViewModel = function () {
        var self = this;
        this.choices = ko.observableArray([
            { id: "1", name: "apple" },
            { id: "1", name: "apple2" },
            { id: "1", name: "apple3" },
            { id: "2", name: "orange" },
            { id: "3", name: "banana" }
        ]);

        this.selectedChoice = ko.observable();

        self.search = ko.observable();

        self.search.subscribe(function() {
            console.log(self.search());
            // would send search to $.ajax to get the remote data
        });
    };

    ko.applyBindings(new myViewModel());
});

4

2 に答える 2

2

次のようなことが可能です:

<input data-bind="kendoAutoComplete: { 
                    data: {}, 
                    minLength: 3, 
                    dataTextField: 'Name',
                    dataSource: {
                        type: 'odata',
                        serverFiltering: true,
                        serverPaging: true,
                        pageSize: 20,
                        transport: {
                            read: 'http://odata.netflix.com/Catalog/Titles'
                        }
                    }, 
                    value: selectedChoice }" />

これを JavaScript オブジェクトに格納して、それを指すこともできます。

サンプル: http://jsfiddle.net/rniemeyer/m8vVA/

于 2013-02-13T21:49:50.277 に答える