我在IE8中使用Breeze .metadata-helper.js有一个问题。我已经包含了es5-shim和sham库。它在以下方面失败:makePropDescription(原型、财产)方法,同时尝试执行:定义属性(proto, propName,描述)带有消息"getter &
未能添加的属性是定义在:
中的DeclarationIDdefine([], 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。
我很确定微风。metadata-helper插件不是为IE8设计的。Breeze本身可以在IE8下工作,但一般来说,大多数Breeze插件都没有经过IE8(及以下版本)的测试或认证,除非明确要求。这种情况下的具体问题是IE8不支持标准javascript类的Object.defineProperty。
也就是说,这段代码是免费的,你可以克隆并修改它用于IE8。只是对IE8及以下版本的需求一直在稳步下降,尝试编写符合IE8的组件是一件非常麻烦的事情,尤其是当你已经习惯使用与ES5兼容的javascript时。