我升级我的应用程序从.NET 4.0到4.5,从1.4.17升级到Breeze.js 1.5.4。事情似乎在IE11和其他浏览器运作良好,但在IE8(或IE11在IE8模式),我得到一个“对象不支持此属性或方法”错误与在这部分代码的_normalizeServiceName
方法:对象不支持在IE8此属性或方法:_normalizeServiceName
function updateWithConfig(obj, config) {
if (config) {
assertConfig(config)
.whereParam("serviceName").isOptional()
.whereParam("adapterName").isString().isOptional()
.whereParam("uriBuilderName").isString().isOptional()
.whereParam("hasServerMetadata").isBoolean().isOptional()
.whereParam("jsonResultsAdapter").isInstanceOf(JsonResultsAdapter).isOptional()
.whereParam("useJsonp").isBoolean().isOptional()
.applyAll(obj);
obj.serviceName = obj.serviceName && DataService._normalizeServiceName(obj.serviceName); // <<< Error here
obj.adapterInstance = obj.adapterName && __config.getAdapterInstance("dataService", obj.adapterName);
obj.uriBuilder = obj.uriBuilderName && __config.getAdapterInstance("uriBuilder", obj.uriBuilderName);
}
return obj;
}
我可以看到_normalizeServiceName
方法被定义权updateWithConfig
后:
ctor._normalizeServiceName = function (serviceName) {
serviceName = serviceName.trim();
if (serviceName.substr(-1) !== "/") {
return serviceName + '/';
} else {
return serviceName;
}
};
如果我跟踪过那里DataService
定义,ctor
确实有返回时,它定义的_normalizeServiceName
方法,而是通过时间updateWithConfig
是称为从DataService
丢失。
的错误,当我创建一个新的EntityManager
发生:
this.manager = new breeze.EntityManager(appRoot + "breeze/myapp");
微风网站似乎是说,IE8仍然支持。我有条件注释中引用了ES5 Shim/Sham脚本:
<!--[if lt IE 9]>
<script src="/myapp/js/respond.js"></script>
<script src="/myapp/js/es5-shim.js"></script>
<script src="/myapp/js/es5-sham.js"></script>
<script src="/myapp/js/json3.js"></script>
<![endif]-->
那么,IE8仍然支持Breeze?我错过了什么,我需要在我的代码更新从微风1.4.x中去1.5.x的(我唯一改变的事情是关系到Promise
API似乎改变)时?或者这是微风中的一个错误?