Создание новых исходящих js-объектов - PullRequest
2 голосов
/ 22 марта 2012

Я создаю сайт как одностраничное приложение с использованием ASP.NET MVC 4 Beta.

В примере приложения рассказывается о добавлении новых сущностей, и в нем используется функция конструктора для сущности продукта.

Однако у меня много типов сущностей, и я не собираюсь писать функцию-конструктор для каждого из них. Вот как я создаю новую сущность (name - это имя источника данных, а dataTarget.upshot.upshotData - список сущностей, которые я получаю из метода GetEntities в coffeeScript ...

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 

У меня вопрос: это лучший способ сделать это или я что-то упустил? Я удивлен, что в upshot, похоже, нет метода 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);

1 Ответ

2 голосов
/ 25 марта 2012
var newThing = {};
var typeName = "MyType:#MyNamespace";
upshot.map({ SomeProperty: "my value" }, typeName, newThing);
upshot.addEntityProperties(newThing, typeName);

Это создаст ваш объект со свойствами сущностей, сопоставленными с наблюдаемыми, и позволит вам установить свойства (см. SomeProperty: «my value»).

...