微风项目 - 删除了Null字段

时间:2015-04-01 15:04:00

标签: knockout.js breeze

如果我运行微调投影查询:

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?

1 个答案:

答案 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只是用数据填充视图模型的一种方法。

因此,如果您的视图需要属性ABCD,则需要首先创建一个提供它们的视图模型。确保您的视图适用于空视图模型。只有在那之后,你才能转向填充数据的任务。