我已經看到其他問題,並且我不認爲我的問題是這些問題的重複。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