2014-01-09 38 views
2

我希望能得到一些幫助。我一直在試圖用$ q來描述使用打字機的角度應用程序。但我掙扎着。我試圖創建一個類型定義文件,如下所示:

/// <reference path="../q/Q.d.ts" /> 
/// <reference path="../angularjs/angular.d.ts" /> 

declare module breeze.core { 
    export function extendQ(rootScope: ng.IScope, q: Q.Promise<any>): any; 
    export function to$q(qPromise: Q.Promise<any>, success: any, fail: any): any; 
} 

但JavaScript代碼作用更像是一個C#擴展方法,我不知道如何實現與打字稿類似的效果。請注意,我只有JavaScript的基本經驗,微風對我來說是完全新鮮的。

回答

2

這是很好的瞭解,@basarat。

但更重要的是...我們已棄用to$q,贊成在整個Breeze應用程序中使用$q作爲承諾。那就對了。微風不再取決於Q.js(雖然這仍然是默認值)。

請改用Breeze.Angular.Q。它可作爲NuGet package或直接from GitHub。參見Breeze Labs documentation for it

您只需配置Breeze即可將$q實例用於您的應用模塊,然後根據$q承諾編寫您的微風代碼。例如

var promise = entityManager 
    .executeQuery(query) 
    .then(successCallback) 
    .catch(failCallback) 
    .finally(finalCallback); 
+1

感謝您的及時響應。我遵循你的指示,最終結果是成功!哦,這是一件輕而易舉的事情。再次感謝。保持偉大的工作。 –

+0

對於「這是一件輕而易舉的事情」:-) –

3

$ Q在angularjs類型定義here

定義你不應該需要參考q.d.ts

+1

謝謝我也考慮到了這一點。乾杯 –

+0

這是現在線'999'只FYI –

+0

很酷。我現在把它變成了一個穩定的(git sha)鏈接;) – basarat