【问题标题】:Breeze Angular (Defining Client Side Properties)Breeze Angular(定义客户端属性)
【发布时间】:2014-02-23 07:55:30
【问题描述】:

大师,

这是我的场景:

我正在使用微风的 registerEntityTypeCtor 函数在我的一个实体上定义一个新的客户端属性(即 fullName)。 fullName 属性被编码为检查实体上的 firstName 和 lastName 属性的值以确定它的值。当我进行查询并从数据库接收实体时,它可以工作。

但是,当我在客户端创建新实体(调用微风的 createEntity 函数)或更改 firstName 或 LastName 属性而不进行保存时,自定义 fullName 属性永远不会更新,直到我执行另一个 db pull。使用轻而易举的更改跟踪,fullName 属性不应该在任何名称属性更改时更新吗?

在调试期间,我注意到当我在代码中使用 getter 时:(即 var fullName = entity.fullName)——当我单步执行代码时,ctor 会命中我的实体的“backingStore”值,这是默认值值(使用 createEntity)或最后一个 db 值,但绝不是实体的当前值。

我错过了什么?谢谢

这是我用于设置属性的示例:

function registerSpmoleSurvey(metadataStore) {
        metadataStore.registerEntityTypeCtor('SpmoleSurvey', spmoleSurvey);

        function spmoleSurvey() { }

        Object.defineProperty(spmoleSurvey.prototype, 'fullName', {
            get: function () {
                var ln = this.lastName;
                var fn = this.firstName;

                return ln ? fn + ' ' + ln : fn;
            }
        });

    }

【问题讨论】:

    标签: angularjs breeze


    【解决方案1】:

    查看此页面以获取将计算结果添加到 Breeze 实体的示例 -

    http://www.breezejs.com/documentation/extending-entities

    传入一个匿名函数作为扩展实体的第三个参数。

    【讨论】:

    • 感谢@PWKad,但这篇文章似乎是针对使用敲除来解决问题的,而我的应用正在使用 Angular 框架。
    • 计算的属性来自淘汰赛,但初始值设定项保持为真。
    【解决方案2】:

    您好,弄清楚我做错了什么......似乎我是骆驼的受害者,我不恰当地大写了属性名称。现在做广告错了:}

    【讨论】:

      猜你喜欢
      • 2015-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-27
      • 2011-09-09
      • 2018-08-21
      • 2014-11-03
      • 2011-06-12
      相关资源
      最近更新 更多