繁体   English   中英

在淘汰订阅中设置微风导航属性

[英]Setting Breeze Navigation Property in Knockout subscription

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

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

不确定ko.subscription的事实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();
}

我不明白您正在努力实现什么。

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

让我们看一下您的datacontext.newBreezeEntity方法:

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

实际上,这确实创建了一个名为entityName类型的新实体。 但这是一个“原型实体”。 它不属于EntityManager ...当然不属于manager实例。 它与任何其他特定实体(例如,您神秘命名的Entity实体)都不相关。 这只是一个独立的实体。

我打赌您认为它属于manager因为您是从那里开始表达的。 好吧,不是。 当您要求它的metadataStore您就失去了与manager的连接。

但是还有很多其他事情对我完全没有意义。 我不能告诉你为什么要订阅vm.newBreezeEntity也不知道为什么它被称为“newBreezeEntity”,也就是它的关系应该是vm.newEntity你也不觉得this是订阅功能中。

也许您应该退后一步,并描述您想要此代码执行的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM