小编Kas*_*ann的帖子

如何使用ember-data手动设置对象状态以清理(保存)

说明:

我正在使用ember-data作为我的一个项目,我有一个问题围绕着污染对象的可能性,然后故意将其状态再次设置为清理 - 而不是提交更改.场景是这样的:

假设我已经获取了一个对象,banana = App.Fruit.find('banana');并且它描述了"黄色水果!".使用XHR长轮询(或WebSockets),我可能会收到对象的更新版本,因为另一个用户已将描述更改为"美味的黄色水果!" 在我取出原始对象后的任何给定时间点.

然后,我想要做的是更新对象以反映新接收的数据.为此,我尝试了不同的方法:

  • 我试过打电话App.Store.load(App.Fruit, new_data);.首先,这种方法不起作用,其次,这不是我想要的.我本可以对对象进行未经提交的更改,在这种情况下,放弃那些(假设load()调用会覆盖它们)是不可取的.

  • 我已经尝试循环遍历新数据,调用.set()- 如下所示:banana.set('description', new_data.description);- 以便用新数据更新对象属性(适用时=不脏).这有效,但它使物体处于脏污状态.

为了使对象再次清理/更新 - 并且没有适配器提交更改! - 我看了一下物体穿过的状态.这些(至少):

  • 步骤1:最初,对象处于该rootState.loaded.saved状态.
  • 第2步:调用.set()属性将其推送到rootState.loaded.updated.uncommitted状态.
  • 第3步:调用App.store.commit();将对象返回到rootState.loaded.saved状态.

因此,我试图对象状态手动设置为saved步骤2之后,如下所示:banana.get('stateManager').goToState('saved');.

但是,这不起作用.下次商店因任何其他原因而提交时,此操作会产生inFlightDirtyReasons未定义错误.

题:

我的问题是:如何再次手动将脏污物体的状态更改为清洁(保存)?

ember.js ember-data

23
推荐指数
6
解决办法
1万
查看次数

如何使用新的Ember.js路由器设置控制器之间的绑定

说明:

新的Ember.js路由器改变了很多东西.我已经迁移了大部分内容,但是有一个用例我似乎无法适应Ember.js的做事方式.

说我有一些带有控制器的应用程序.其中一些控制器属于我的路线App.Router,其中一些不属于我的路线I18nController.这是一个非路由器控制器,可确保通过Handlebars帮助程序在整个应用程序中翻译内容.

我也有一个App.UserControllerApp.User记录的content.

问题:

以前,我是能够建立之间的绑定App.I18nController,并App.UserController通过比较难看localeBinding: 'App.router.userController.content.locale',让我随时定位时读取用户的语言环境.

但是,使用新的路由器,这已不再可能.

题:

我的问题是:我应该如何使用新路由器设置此绑定?

ember.js

5
推荐指数
1
解决办法
682
查看次数

如何在Jade之上的Handlebars.js模板中使用Ember.js {{action}}

我正在使用Ember.js和Handlebars.js进行我正在进行的项目.服务器端是Node.js + express,我使用了Jade模板引擎.

现在,每当我想将动作绑定到DOM元素时,我都会使用Ember.js的{{action}}属性.目前,这是我的代码在Jade中的样子:

script(type='text/x-handlebars', data-template-name='frontpage')
  div.logo(''='{{action goToFrontpage}}')
Run Code Online (Sandbox Code Playgroud)

上面的确有效,但是,这''='{{action goToFrontpage}}'部分看起来有些晦涩难懂.

有没有其他方法这样做?结合Ember.js,Handlebars.js和Jade时,也许是最好的做法?

node.js express handlebars.js ember.js pug

2
推荐指数
1
解决办法
1916
查看次数

标签 统计

ember.js ×3

ember-data ×1

express ×1

handlebars.js ×1

node.js ×1

pug ×1