通过构造函数在Breeze中使用observableArray扩展实体时出错

时间:2013-08-08 13:11:44

标签: javascript knockout.js breeze

如果我尝试通过构造函数在Breeze中扩展实体,例如:

breeze.EntityManager('ServiceUrl').metadataStore.registerEntityTypeCtor(
  'customer',
  function () {
    this.orders = ko.observableArray([]);
  }
);

尝试设置新属性时出现Knockout错误:

myCustomer.orders(newOrders);

错误是:

"Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters."

如果我在构造后的初始化程序中添加它,同样的工作。 我做错了吗?

1 个答案:

答案 0 :(得分:0)

您缺少必需的参数 -

breeze.EntityManager('ServiceUrl').metadataStore.registerEntityTypeCtor(
  'customer', null,
  function () {
    this.orders = ko.observableArray([]);
  }
);

您的'customer'参数是识别实体类型所必需的。

第二个参数是构造函数(不是用于将属性扩展到实体上)

第三个是初始化实体

http://www.breezejs.com/sites/all/apidocs/classes/MetadataStore.html#method_registerEntityTypeCtor

您还需要在函数中定义实体 -

breeze.EntityManager('ServiceUrl').metadataStore.registerEntityTypeCtor(
  'customer',
  function (cust) {
    cust.orders = ko.observableArray([]);
  }
);