我是Knockout的新手,我仍在努力了解它的工作原理。我有这个函数应该从ajax调用返回数据但是当我尝试获取值时,对象说它是未定义的。
我的模型未定义数据:
function ViewModel() {
var self = this;
self.Organization = ko.observable();
self.App = ko.observableArray([]);
self.Deployed = ko.observableArray([]);
self.EngagementSolutions = ko.observableArray([]);
self.MS = ko.observable();
self.ActiveEngagements = ko.computed(function () {
var ActiveEngagements = 0;
ko.utils.arrayForEach(self.EngagementSolutions(), function (item) {
if (item.IsActive) {
ActiveEngagements++;
}
});
return ActiveEngagements;
});
self.TicketCount = ko.computed(function () {
console.log(self.Organization.UniqueICount);
var uniqueOpenICount = (self.Organization.UniqueOpenICount === "undefined" ? self.Organization.UniqueOpenICount : 0);
var uniqueICount = (self.Organization.UniqueICount === "undefined" ? self.Organization.UniqueICount : 0);
console.log(uniqueOpenICount + " / " + uniqueICount);
return uniqueOpenICount + " / " + uniqueICount;
});
我的函数,其中值填充对象:
function SucessFunction(data) {
console.log(data.Organizations[0].UniqueICount);
var newOrganization = new OrganizationObject();
newOrganization.UniqueICount = data.Organizations[0].UniqueICount;
newOrganization.UniqueOpenICount = data.Organizations[0].UniqueOpenICount;
console.log(newOrganization);
viewModel.Organization = newOrganization;
console.log(viewModel.Organization);
}
});
提前感谢您的帮助
答案 0 :(得分:0)
您未正确使用observable
。 KO的可观察者是功能。
您可以通过使用新值作为参数调用它们来设置它们的值:
viewModel.Organization(newOrganization);
不
viewModel.Organization = newOrganization; // Not this
通过不带参数调用它们来获得它们的价值:
console.log(viewModel.Organization());
// -------------------------------^^
不
console.log(viewModel.Organization); // Not this
主要是,您滥用它的方式会导致计算机无法正常工作且视图无法更新。
还有一些其他问题:
undefined
进行比较。我的猜测是你可能想将类型与"undefined"
进行比较,或者将它们的值与"undefined"
进行比较。但是,将它们的值与undefined
进行比较会得到"undefined"
,除非它们实际上包含字符串 false
。这是一个粗略的更新,但它并不意味着完成所有工作,只是为了指出正确的方向:
"undefined"