Создание новых исходящих js-объектов
Я строю сайт как одностраничное приложение с использованием 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 ответ
var newThing = {};
var typeName = "MyType:#MyNamespace";
upshot.map({ SomeProperty: "my value" }, typeName, newThing);
upshot.addEntityProperties(newThing, typeName);
Это создаст ваш объект со свойствами сущности, сопоставленными с наблюдаемыми, и позволит вам установить свойства (см. SomeProperty:"мое значение").