似乎JayData EntitySet在通过Ember设置时不会捕获属性更改 像这样:
//init at start
controller.set('todo', todoDB.Todos.attachOrGet({ Id:1}));
//later in app
controller.set('todo.Completed', true);
//in the end
todoDB.saveChanges();
我试过了:
controller.todo.save();
但它没有用!
然后我终于用这个 HACK(?):
来管理var self = this;
mdefs = self.get('todo').getType().memberDefinitions;
for (var name in mdefs) {
if (mdefs[name]
&& mdefs[name].kind == "property"
&& mdefs[name].definedBy == self.todo.getType())
self.todo._setPropertyChanged(mdefs[name]);
}
self.get('todo').save();
所以我的问题是......有没有漂亮的(ish)方法呢?
看看@ kingpin2k的anwer bellow和评论!
事实证明(显然)只发生在OData提供商身上(没有测试过其他人)。无法用WebSQL重现。
答案 0 :(得分:1)
设置者无效,您将todo
设置为未定义。
//init at start
controller.set('todo', todoDB.Todos.attachOrGet({ Id:1}));
http://emberjs.jsbin.com/AyIMIBi/1/edit
删除并完成
http://emberjs.jsbin.com/AyIMIBi/2/edit
另外,如果你试图从控制器上取下待办事项,你就应该使用吸气剂。
controller.get('todo').save();