IE8 で Breeze を使用して Breeze.metadata-helper.js を使用すると問題が発生します。es5-shim および sham ライブラリは既に含めています。失敗します: makePropDescription(proto, property) メソッドを実行しようとしているときに: Object.defineProperty(proto, propName, descr) で「getters & setters can't be defined on this javascript engine」というメッセージが表示されます。
追加に失敗するプロパティは、次で定義されている DeclarationID です。
define([], function () {
var dt = breeze.DataType;
var defaultNamespace = 'Our.Custom.Namespace';
// Breeze Labs: breeze.metadata.helper.js
var helper = new breeze.config.MetadataHelper();
var addDataService = helper.addDataService.bind(helper);
var addTypeToStore = helper.addTypeToStore.bind(helper);
var setDefaultNamespace = helper.setDefaultNamespace.bind(helper);
var createMetadataStore = function () {
return new breeze.MetadataStore();
};
var addDeclaration = function (store) {
var et = {
shortName: "Declaration",
namespace: defaultNamespace,
defaultResourceName: "Declaration",
dataProperties: {
DeclarationID: { dataType: dt.Int64, isPartOfKey: true },
MRN: { dataType: dt.String },
IssuingDate: { dataType: dt.DateTime },
DeclarationStateCode: { dataType: dt.String },
DeclarationStateID: { dataType: dt.Int64 },
DeclarationType: { dataType: dt.String }
}
};
return addTypeToStore(store, et);
};
var initialize = function (dataService) {
var store = createMetadataStore();
addDataService(store, dataService);
setDefaultNamespace(defaultNamespace);
addDeclaration(store);
return store;
};
return {
initialize: initialize
};
});
Breeze v1.4.11 と Metadata-Helper v1.0.5 を使用しています。