如果我运行微调投影查询:
var item;
breeze.EntityQuery
.from("SomeTable")
.where("Id", "==", id)
.select("A, B, C, D")
.using(myEntityManager).execute()
.then(function(data) { item = ko.observable(data.results[0]); });
然后说表中的行,B和C都是NULL,我会找回没有B和C的对象。
{
A: "somevalue",
B: "someothervalue"
}
在UI中我有:
<div data-bind="with: item">
<span data-bind="text: A" />
<span data-bind="text: B" />
<span data-bind="text: C" />
<span data-bind="text: D" />
</div>
然后我得到错误 -
ReferenceError:无法处理绑定“with:function(){return item}“消息:无法处理绑定”文本: function(){return B}“ 消息:'B'未定义
我错过了什么吗?如何在结果中获得B和C,值为null?
答案 0 :(得分:0)
以下是Northwind sample database可用于http://learn.breezejs.com/进行交互式测试的{{3}}后的情况。
var myEntityManager = new breeze.EntityManager('api/northwind');
function Employee() {
this.FirstName = ko.observable(null);
this.LastName = ko.observable(null);
}
Employee.prototype.init = function (data) {
if (data) {
this.FirstName(data.FirstName);
this.LastName(data.LastName);
} else {
this.FirstName(null);
this.LastName(null);
}
};
Employee.prototype.loadFromId = function (id) {
var self = this;
breeze.EntityQuery.from("Employees")
.where("EmployeeId", "==", id)
.select("FirstName, LastName")
.using(myEntityManager).execute()
.then(function (data) {
self.init(data.results[0]);
})
.fail(function () {
self.init(null);
// also show or log error message
});
};
用法:
var viewModel = new Employee();
viewModel.loadFromId(1);
ko.applyBindings(viewModel);
关键是你需要一个实际的视图模型首先。你没有编写breeze代码,你正在编写Knockout代码,而Breeze只是用数据填充视图模型的一种方法。
因此,如果您的视图需要属性A
,B
,C
和D
,则需要首先创建一个提供它们的视图模型。确保您的视图适用于空视图模型。只有在那之后,你才能转向填充数据的任务。