我有一个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);
}
});
答案 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);