1

Ember 文档描述PromiseProxyMixin为:

使 ObjectProxy、ObjectController 或 ArrayControllers 承诺感知的低级混合。

(注意它没有提到Controller。)

我一直在使用PromiseProxyMixin最初ModalControllerEmber.ObjectController.

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

具体来说,返回给属性的对象的promise属性不会自动设置在Controller(就像它们在ObjectController.

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

该文档还指出:

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

所以我想从现在开始我只需要手动设置这些属性?

4

2 回答 2

1

因为返回的属性的合并Promise不再自动发生,所以我的选择似乎是:

  1. Controller背面转换为ObjectController(错误方向)
  2. 手动合并由返回的对象的属性(如果我在通用或类似的情况下这样Promise做,这可能是有意义的)MyProxyMixin
  3. 转换ControllerObjectProxy(不确定)
  4. 使用 Ember 的ProxyMixin

我更喜欢#4,但是围绕这个 mixin 有一些变化(它作为 Ember.FEATURE 启用了一段时间,但似乎又被设为私有了。)

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

于 2015-08-11T21:15:51.667 回答
0

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

由于代理是 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'
于 2015-08-11T07:37:13.783 回答