Breezejs扩展实体

Breezejs扩展实体,breeze,Breeze,我对Breezejs(1.4.2)q(0.9.7)有意见 我想为实体添加一个计算属性 var doctorInitializer = function (doctor) { doctor.FullName = ko.computed(function () { return doctor.FirstName() + " " + doctor.MiddleName() + " " + doctor.LastNam

我对Breezejs(1.4.2)q(0.9.7)有意见 我想为实体添加一个计算属性

var doctorInitializer = function (doctor) {
    doctor.FullName = ko.computed(function () {           
        return doctor.FirstName() + " " + doctor.MiddleName() + " " + doctor.LastName() + " " + doctor.SurName();           
    });
};

var doctorName = '/breeze/polyclinic', 
doctorManager = new breeze.EntityManager(doctorName);
var store = doctorManager.metadataStore;
store.registerEntityTypeCtor("Doctor", null, doctorInitializer);
我尝试向构造函数添加计算出的敲除

var doctor = function () {
  self.FullName = ko.computed( {
    read: function() {
       return self.FirstName + " " + self.MiddleName + " " + self.LastName + " " + self.SurName;
    },
    deferEvaluation: true
  });
};
store.registerEntityTypeCtor("Doctor", doctorInitializer);
在这两种情况下,仅当我删除括号时才起作用,但中间名和姓氏不是必需的,而是空字符串

这就是我的错误

更新 我尝试在控制台日志中添加错误,并按照您的示例进行操作,我发现相同的错误不是一个函数


我希望有人能帮助我

您在屏幕截图中看到的错误是因为您的查询抛出了一个您没有处理的错误。在entityQuery的末尾附加一个.fail(failFunction)

如果没有附加的姓氏函数,则不能调用doctor.namite()。调用doctor.Nastname只返回一个不给您赋值的函数

很有可能,你不会100%明白为什么它不起作用,因为你不明白淘汰赛是如何运作的。你可能还不明白我上面描述的意思。你需要先了解击倒是如何运作的,然后试着学习微风

如果你只是想让它工作,而不知道如何或为什么把它放在那里,然后继续。这假设返回的一个名为MiddleName和姓氏的属性为空

doctor.FullName = ko.computed(function () { 
    var fullName = "";
    fullName += doctor.FirstName();
    if (doctor.MiddleName()) { fullName += ' ' + doctor.MiddleName(); }
    fullName += ' ' + doctor.LastName();
    if (doctor.SurName()) { fullName += ' ' + doctor.SurName(); }
    return fullName
});
这是至少FirsName和LastName有值的响应
doctor.FullName = ko.computed(function () { 
    var fullName = "";
    fullName += doctor.FirstName();
    if (doctor.MiddleName()) { fullName += ' ' + doctor.MiddleName(); }
    fullName += ' ' + doctor.LastName();
    if (doctor.SurName()) { fullName += ' ' + doctor.SurName(); }
    return fullName
});