Jaydata和Ember Set的怪异



通过Ember设置时,JayData EntitySet似乎无法捕获属性更改像这样:

//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();

所以我的问题是…有什么漂亮的方法可以做到这一点吗?

编辑

看看@kingpin2k的怒吼和评论!

它(显然)只发生在OData提供者身上(尚未测试其他提供者)。无法使用WebSQL进行复制。

setter无效,您正在将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

此外,尽管没有必要,如果你试图从控制器中获取todo,你应该使用getter。

controller.get('todo').save();

相关内容

  • 没有找到相关文章

最新更新