eventsknockout.jskendo-uikendo-combobox

kendo knockout combobox event issue


html part

<input data-bind="kendoComboBox: { dataTextField: 'FirstName', dataValueField: 'PersonID',  data: AllUsers,template: '<span>#= data.FirstName # #= data.LastName # </span>',  value: SelectedUserID, 
change: UserSelectionChanged}" />

event handler inside model

var self= this;...    
self.UserSelectionChanged = function () {

        $.ajax({
            type: "POST",
            url: defaultUri + '/Home/GetUserTasks',
            data: JSON.stringify({ PersonID: self.SelectedUserID() }),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (o) {
                self.SelectedUserTask(null);
                self.SelectedUserTask(o);
                //RRM: Added this line below so that whenever user dropdown is changed or refresh button is clicked in AssignedTo the first task of that particular user is Selected.
                self.selectTask(o[0]);

            }
        });
    };

here the event is being called but the data in self is not there. The event doesn't seems to be bind well with knockout. how to properly bind the ko event in the kendo combobox event?


Solution

  • Instead of registring to the change event, I'd subscribe to SelectedUserID:

    var self= this;
    ...
    self.SelectedUserID.subscribe(function(selectedUserId) {
    
        $.ajax({
            type: "POST",
            url: defaultUri + '/Home/GetUserTasks',
            data: JSON.stringify({ PersonID: selectedUserId }),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (o) {
                self.SelectedUserTask(null);
                self.SelectedUserTask(o);
                //RRM: Added this line below so that whenever user dropdown is changed or refresh button is clicked in AssignedTo the first task of that particular user is Selected.
                self.selectTask(o[0]);
    
            }
        });
    });
    

    This way it doesn't matter when or how the SelectedUserID is being changed.