我已经看到其他问题,并且我不认为我的问题是这些问题的重复。Breezejs:[Q]未处理的拒绝原因(应为空)
Breezejs [Q] Unhandled rejection reasons (should be empty)
Unhandled rejection reasons (should be empty)
好了,所以我一直在breezejs跟进;尽可能接近文档以及样本,但我仍然遇到同样的问题。我将在IE9 +和Chrome上展示代码,但是当我在IE7和IE8中尝试它时,它会爆炸。
这里是(使用的WebAPI 2)我的服务器端控制器:
namespace Map.API.Controllers
{
[BreezeController]
public class LocationController : ApiController
{
readonly EFContextProvider<LocationEntities> _contextProvider =
new EFContextProvider<LocationEntities>();
[HttpGet]
public string Metadata()
{
return _contextProvider.Metadata();
}
[HttpGet]
public IQueryable<dbSTATES> States()
{
return _contextProvider.Context.MD_STATE_CD;
}
}
}
这里是我的角度厂:
mapapp.app.factory('StateContext', ['$http', 'StateModel', function ($http, StateModel) {
configureBreeze();
var dataService = new breeze.DataService({
serviceName: "/Map.API/api/Location"
});
var datacontext = {
getAllStates: getAllStates,
getCachedStates: getCachedStates
};
return datacontext;
/* BLOWS UP AFTER RUNNING MANAGER.EXECUTEQUERY(QUERY) */
function getAllStates() {
var query = breeze.EntityQuery
.from("States");
return manager.executeQuery(query);
}
function getCachedStates() {
var query = breeze.EntityQuery
.from("States").toType('MD_STATE_CD');
return manager.executeQueryLocally(query);
}
function configureBreeze() {
// configure to use webapi
breeze.config.initializeAdapterInstances({ dataService: "webApi" });
}
}
这里是我如何从我的角度控制器调用它:
StateContext.getAllStates().then(
function (data) {
var localData = data.results; //never gets here
logger.info("Fetched States");
}).fail(function (e) {
logger.info(e); //always gets here
}).done();
同样,这在现代浏览器中运行良好,但在IE7和IE8中爆炸。经过大量的研究,没有人提到这会失败。尽管BreezeJS文档提到了IE7中一些失败的东西,但应该有明确的信息说这绝对不会起作用。
如果我碰巧关元:
var dataService = new breeze.DataService({
serviceName: "/Map.API/api/Location",
hasServerMetadata: false
});
那么这个作品在所有的浏览器。但我希望打开元数据以便我可以进行缓存。然而,我最担心的是,即使我修复了这个问题,我也不知道缓存是否仍然可以在IE7中正常工作。
即使我喜欢BreezeJS,它在谷歌浏览器上表现得非常出色,但我花了几个小时,几天,几周时间和头痛来制作我想在IE7中工作的内容。添加大量的浏览器支持脚本,即shiv和ie-shims ..非常接近,然后找不到localStorage。我希望BreezeJS会记录更多关于IE7不支持的内容,我有很大一部分客户使用IE7和IE8,并且编写程序并在几小时后发现它不起作用是非常困难的。
嗯,我认为微风在ie9及以上版本上运行良好,我考虑到它;但是像我工作的大多数技术一样,在使用后向支持库时,后向支持是可行的。我并没有在ie7上真正体验过任何有关angular的问题,我很高兴使用它而不是使用knockout。 BreezeJS和元数据是我的问题。没有元数据的BreezeJS在IE7中工作正常,但只有服务器完成所有查询工作。 – sksallaj
我读过关于javascript中没有支持什么的回复“没有defineProperty”或“没有geters或setter”,但我很乐观地认为我并不需要它。如果回复中包含诸如“BreezeJS仅支持IE9及更高版本缓存”的内容,那么避免这种情况会很有帮助;因为我不知道Breeze的核心JS内部使用了什么。至于角度支持,这是可以理解的,但同时令人失望。如果有两个版本的产品(Kinga就像JQuery 2.X和1.X),它会很好,它允许向后支持。 – sksallaj
“,但只有当服务器完成所有查询”oops“的工作时,对于那个错误感到抱歉。我的意思是,只有当我不想使用缓存。 IE7能够查询服务器并获得结果。 – sksallaj