我还可以在Ember.Controller中使用PromiseProxyMixin吗?

时间:2015-08-11 02:56:22

标签: javascript ember.js

Ember文档将user描述为:

  

低级混合使ObjectProxy,ObjectController或ArrayControllers能够发出声明。

(注意它没有提及PromiseProxyMixin。)

我一直在使用Controller中的PromiseProxyMixinModalController最初是从Ember.ObjectController扩展而来的。

现在不推荐ObjectController(Ember 1.11),我已将此控制器转换为扩展Ember.Controller,它不再按预期工作。

具体而言,返回到promise属性的对象的属性不会自动设置在Controller中(就像它们位于ObjectController中一样。

我的isFulfilled观察者仍在触发,但未设置应从返回的对象合并的属性。

文档还说明:

  

由于控制器是ObjectController,而json现在是其内容,所以所有json属性都可以直接从控制器获得。

所以我想我现在必须手动设置这些属性?

2 个答案:

答案 0 :(得分:1)

由于Promise返回的属性的合并不再自动发生,我的选项似乎是:

  1. Controller转换回ObjectController(方向错误)
  2. 手动合并Promise返回的对象的属性(如果我在通用MyProxyMixin中执行此操作可能有意义
  3. Controller转换为ObjectProxy(不确定)
  4. 使用Ember的ProxyMixin
  5. 我会更喜欢#4,但是在这个mixin中有一些旋转(它作为Ember.FEATURE启用了一段时间,但似乎又被私有了。)

    最终我选择了#2。 (我刚刚更新了我的代码,将我需要的属性复制到Controller。)

答案 1 :(得分:0)

PromiseProxyMixin尚未弃用,并在其他环境中使用。 git上的current API docs没有提到控制器。你看到的措辞已经改变,我认为继续使用是安全的。

  

由于代理是ObjectProxy,而json现在是其内容,所以所有json属性都可以直接从代理中获得。

// Assuming the following json:
{
  firstName: 'Stefan',
  lastName: 'Penner'
}
// both properties will accessible on the proxy
proxy.get('firstName') //=> 'Stefan'
proxy.get('lastName')  //=> 'Penner'