【问题标题】:Setting Breeze Navigation Property in Knockout subscription在 Knockout 订阅中设置 Breeze 导航属性
【发布时间】:2014-06-25 02:18:56
【问题描述】:

我正在使用 Breezejs 和 Knockoutjs 构建一个 SPA(单页应用程序)。

我在尝试在淘汰订阅中设置导航属性时遇到问题。在ko.subscription 的最后一行,console.log 函数向我显示了实体,但是,WebPresences 导航属性为空。

不确定它在ko.subscription 中的事实是否真的很重要,但我已经能够在保存之前调用的 js 函数中设置导航道具,所以我认为它具有一定的意义。

这是我的Entity 模型

public partial class Entity
{
    public int Id { get; set; }
    public string Name { get; set; }
    public Nullable<int> WebId { get; set; }

    public virtual WebPresence WebPresence { get; set; }
}

这是我的ko.subscription 和相关变量:

var vm = {
    newEntity: ko.observable(datacontext.createBreezeEntity('Entity')),
    newWebPresence: ko.observable(datacontext.newBreezeEntity('WebPresence')),
}

vm.newEntity().WebPresence.subscribe(
    function (data) {
        var self = this;
        if (data === null)
            self.target(vm.newWebPresence());
        console.log(vm.newEntity());
    }
);

最后但并非最不重要的是我的datacontext

createBreezeEntity: function (entityName) {
    return manager.createEntity(entityName);
},

newBreezeEntity: function (entityName) {
    return manager.metadataStore.getEntityType(entityName).createEntity();
}

【问题讨论】:

    标签: javascript knockout.js breeze navigation-properties


    【解决方案1】:

    我不明白你在努力完成什么。

    我非常有信心的一件事是……您的 datacontext.newBreezeEntity 创建了一个悬而未决的对象,它不属于任何导航属性。

    让我们看看你的datacontext.newBreezeEntity 方法:

    return manager.metadataStore.getEntityType(entityName).createEntity();
    

    这确实创建了一个名为entityName 的新实体。但这是一个“原始实体”。它不属于EntityManager ...当然不属于manager 实例。它与任何特定的其他实体(例如,您神秘地命名为 Entity 的实体)无关。它只是一个分离的实体。

    我打赌你认为它属于manager,因为你从那里开始表达。好吧,它没有。在您请求 metadataStore 的那一刻,您失去了与 manager 的连接。

    但是还有很多对我来说毫无意义的事情。我不知道您为什么要订阅vm.newBreezeEntity,也不知道为什么它被称为“newBreezeEntity”,也不知道它与vm.newEntity 应该是什么关系,也不知道您认为this 在订阅功能中是什么。

    也许你应该退后一步,描述一下你想让这段代码做什么。

    【讨论】:

    • 我可以尝试解释我的代码和我所做的事情,但是,您已经回答了一个更大的问题。如果另一个人不能进来,查看我的代码并了解发生了什么,我会遇到更大的问题。我很欣赏你的回应。我会想出一个更好的解决方案并使我的代码更“可读”。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多