2012-07-16 163 views
0

我想寫以下行與腳本尖銳:使用灰燼JS尖銳

App.SP = SP = Ember.Object.extend({ 
init: function (lineV, lineH, resourceMethod){... 

這可能嗎?我該怎麼做?

回答

2

一般來說,每個腳本框架都有自己的定義類的變體模式,腳本#不支持所有可能的變體......因此,您可以用Init方法編寫名爲SP的ac#類,並期望EmberJS定義類的方式就是結果。

你可以做的是爲帶有擴展方法的Ember.Object定義類,該擴展方法需要一個字典,用一堆名稱/值對填充字典,例如「init」的值設置爲委派給靜態方法。

實例(這僅僅是一個開始,我肯定會需要調整和更多的改造,如果你繼續這樣的路徑):

在導入庫:

namespace EmberApi { 

    [Imported, ScriptNamespace("Ember"), ScriptName("Object")] 
    public static class EmberObject { 

     public static object Extend(Dictionary<string, object> nameValuePairs) { 
      return null; 
     } 
    } 
} 

而在你的代碼:

public static void App { 

    static App() { 
     Dictionary<string, object> members = new Dictionary<string, object>(); 
     members["init"] = Init; 

     object sp = EmberObject.Extend(members); 
    } 

    public static void Init(int lineV, int lineH, string resourceMethod) { ... } 
} 

所以我認爲這是可能的,但你失去了一堆價值的道具,這是寫你的代碼,如C#。

一個更適合的是能夠消耗現有的API /框架,但編寫自己的代碼作爲普通的C#類,即槓桿轉化這些類型的腳本#模式構建成劇本。

如果有模式本身的建議,歡迎,尤其是,因爲有人認爲使腳本#模式在未來變得更輕。

+0

我使用燼我的應用程序的一小部分,但它是非常usefulle,我中繼觀察者mechanizm使我的所有車型彼此同步的變化。 – 2012-07-18 11:57:57

1

在回答另一個問題時,一種新的方法來考慮,我將分享與一些潛在的想法,如果你想繼續,還是爲別人的道路。

編譯器假定某個運行時合同(一按滿足mscorlib.js),其包括像Type.registerClass和其它相關的方法的API。一種方法來與拿出自己的模式來定義類型的其他框架的工作是簡單地重新實現mscorlib.js,使得像的registerClass方法作爲橋樑爲其他圖書館。