Jaydata和Ember设置怪异

时间:2013-12-13 22:41:51

标签: ember.js jaydata

似乎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重现。

1 个答案:

答案 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();