更新Knockout Observable和Dropdown选择

时间:2014-01-02 16:10:07

标签: javascript asp.net knockout.js

我有一个ASPX页面,下拉选择与Knockout.JS绑定。在页面加载中,我检查参数的url并更新视图,如果它们是我在API中可以看到的参数。我已经更改了API以省去不必要的代码,因为它返回了所需的值。我的问题是我无法将我的可观察的SelectedView更新为“Notes”。有什么建议吗?

ASPX:

       <asp:DropDownList runat="server" data-bind="value: SelectedView" id="viewselect">
           <asp:ListItem>Select A View</asp:ListItem>
           <asp:ListItem>Notes</asp:ListItem>
           <asp:ListItem>Credit Manager</asp:ListItem>
       </asp:DropDownList>

查看型号:

function CustomerViewModel() {

    this.self = this;
    self.SelectedCustomer = ko.observable();
    self.SelectedView = ko.observable();
}

API:

$(document).ready(function () {

 var custnmbr = "123456";

 if (custnmbr != "") {
     var notes = "Notes";
     self.SelectedView(notes);
 }

});

1 个答案:

答案 0 :(得分:0)

我想如果你在控制台中看到你会收到错误:

Uncaught TypeError: Object [object global] has no method 'SelectedView' 

因为您的$(document).ready使用的对象self仅在CustomerViewModel()内定义。

要解决此问题,您需要在传递给.SelectedView(notes);的对象实例上调用ko.applyBindings

更新

例如:

function CustomerViewModel() {
    this.self = this;
    self.SelectedCustomer = ko.observable();
    self.SelectedView = ko.observable();
}
var customerObj=new CustomerViewModel();
ko.applyBindings(customerObj);

// later in your code.
customerObj.SelectedView(notes);