2013-11-22 41 views
0

HTML部分内部模型剑道淘汰赛组合框事件问题

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]); 

      } 
     }); 
    }; 

这里该事件被称为但是self数据是不存在

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

事件处理程序。这个事件似乎并没有与淘汰赛结合得很好。 如何正确绑定kendo combobox事件中的ko事件?

回答

3

而是在注册到变化的事件,我想订阅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]); 

     } 
    }); 
}); 

这样没关系何时或如何SelectedUserID正在被改变。

0

正如sroes写到订阅observable是这里最好的选择。

在那里你必须绑定到剑道事件,那么你可以做到这一点的情况下:

data-bind="... change: UserSelectionChanged(), ...." 

通知末尾的函数调用括号^

现在你函数是这样的:

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

    return function(e) { 
     $.ajax({ 
      self.blah ... 
     }); 
    } 
} 

现在你已经创建了一个闭包,你可以使用访问您的视图模式,但也有原Telerik事件引发内部e像e.dataItem等

所以现在你是不可阻挡的,你可以做一切!