Я обновляю свое приложение с .NET 4.0 до 4.5 и обновляю Breeze.js с 1.4.17 до 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/Шэма сценарии, на которые ссылается в условном комментарий:
<!--[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? Я пропустил что-то, что мне нужно обновить в своем коде при переходе с Breeze 1.4.x на 1.5.x (единственное, что я изменил, было связано с API Promise
, который, похоже, изменился)? Или это ошибка в Бризе?