2012-03-22 8 views
2

私は、ASP.NET MVC 4 Betaを使用してシングルページアプリケーションとしてサイトを構築しています。新しいアップショットjsエンティティの作成

サンプルアプリケーションは、新しいエンティティの追加について話し、製品エンティティにコンストラクタ関数を使用します。

しかし、私は多くのエンティティタイプを持っており、それぞれに対してコンストラクタ関数を書くつもりはありません。これは私が新しいエンティティを作成しています方法です(nameは、データソースの名前で、dataTarget.upshot.upshotDataが、私は戻ってのCoffeeScriptでGETENTITIES方法 から取得するエンティティのリストである...

newItem = {} 
for field, def of upshot.metadata(upshot.dataSources[name]._entityType).fields 
    do (field, def) -> 
    if def.array 
     newItem[field] = new ko.observableArray() 
    else 
     newItem[field] = new ko.observable() 
     upshot.addEntityProperties newItem, upshot.dataSources[name]._entityType 
     dataTarget.upshot.upshotData.push newItem 

これがあれば、私の質問です最良の方法は、それを行うのか、私は何かが足りないのですか?私は結論がcreateEntityのメソッドを持っているようには見えないことを驚いている。JavaScriptで

...

newItem = {}; 
_ref = upshot.metadata(upshot.dataSources[name]._entityType).fields; 
_fn = function(field, def) { 
    if (def.array) { 
     return newItem[field] = new ko.observableArray(); 
    } else { 
     return newItem[field] = new ko.observable(); 
    } 
}; 
     for (field in _ref) { 
     def = _ref[field]; 
     _fn(field, def); 
     } 
     upshot.addEntityProperties(newItem, upshot.dataSources[name]._entityType); 
     dataTarget.upshot.upshotData.push(newItem); 

答えて

2
var newThing = {}; 
var typeName = "MyType:#MyNamespace"; 
upshot.map({ SomeProperty: "my value" }, typeName, newThing); 
upshot.addEntityProperties(newThing, typeName); 

これは、observablesにマッピングされたエンティティプロパティを持つオブジェクトを作成し、プロパティを設定できるようにします(SomeProperty: "my value"を参照)。

+0

こんにちはこれはフィールドを持つ項目を初期化しますが、配列のプロパティは観測可能な配列にのみ設定されています。 –

関連する問題