【问题标题】:Breeze - constructor not being invokedBreeze - 未调用构造函数
【发布时间】:2017-04-07 06:51:10
【问题描述】:

我正在使用 Breeze 构建一个新的 Ng 1 项目。我需要向某些实体添加客户端属性。我添加了一个构造函数,但它没有被调用。我添加了一个 post 初始化程序,它也没有被调用。

// a convention can self-register as the default
breeze.NamingConvention.camelCase.setAsDefault();

// create a manager to execute queries
service.manager = new breeze.EntityManager("/api/pts");

// access to the manager's store to add custom client-side properties ..
service.metastore = service.manager.metadataStore;

// entities with client-side properties ..
service.metastore.registerEntityTypeCtor('PtsWine__Pts_BreezeModel', PtsWine, ptsWineInitializer);

var PtsWine = function () {
    debugger;
    this.uiDayUid = 0;
}

var ptsWineInitializer = function (pw) {
    debugger;
    pw.uiDayUid = 0;
}

var query = new service.EntityQuery().from("Wines");
return service.manager.executeQuery(query)
    .then(function (d) {
        debugger;
        /// ???  examining d.results shows 40 PtsWine__Pts_BreezeModel entities but 
        ///      constructor and initializer above were never invoked .. ???
    })
    .fail(function (response) {
        toastr.error("Server Error: failed to retrieve listing.")
    });

【问题讨论】:

    标签: angularjs breeze


    【解决方案1】:

    初始化顺序对我来说似乎不正确。在执行 registerEntityTypeCtor 时,PtsWine 和 ptsWineInitializer 未定义。还记得 javascript 提升概念吗? https://developer.mozilla.org/en-US/docs/Glossary/Hoisting

    您需要在调用 registerEntityTypeCtor 之前定义变量。

    【讨论】:

    • duhh .. 就是这样。 Thx Filipe 我一直盯着它看,以至于我没有看到这个最明显的 js gotcha .. 是的,我也忘记了“使用严格”,所以对我来说是双重的。再次感谢!
    猜你喜欢
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 2015-06-27
    • 2011-10-18
    • 2015-10-09
    • 1970-01-01
    相关资源
    最近更新 更多