Ember.js 解析余烬模型中的字符串

Ember.js 解析余烬模型中的字符串,ember.js,promise,ember-data,Ember.js,Promise,Ember Data,我有一个EmberJS模型的计算属性: imageUrl: computed('image', function () { let promise = new RSVP.Promise(function (resolve, reject) { resolve('image.png'); }); // return DS.PromiseObject.create({promise: promise}); }), 这是可行的,但是模型将承诺解析为

我有一个EmberJS模型的计算属性:

imageUrl: computed('image', function () {

    let promise = new RSVP.Promise(function (resolve, reject) {
        resolve('image.png');
    });

    //
    return DS.PromiseObject.create({promise: promise});
}),
这是可行的,但是模型将承诺解析为一个对象,因此我必须执行以下操作:

resolve({image: 'image.png'});
{{result.imageUrl.image}}
要实际访问模板中的值,请使用以下方法:

resolve({image: 'image.png'});
{{result.imageUrl.image}}
而不仅仅是:

{{result.imageUrl}}

显然,问题似乎与DS.PromiseObject有关,但我不知道该用什么来代替,文档在这方面也没有多大帮助。

DS.PromiseObject将结果代理到其内容字段。如果只传入一个字符串,可以使用
{{result.imageUrl.content}
检索它。但是,如果您返回一个对象,那么对
{{result.imageUrl.image}}
的调用将使用代理,这样当您
获取图像时,它将映射到
content.image

就我个人而言,我更喜欢使用
ember并发
满足我的异步需求:

import { readOnly } from '@ember/object/computed';
import { task } from 'ember-concurrency';

fetchImage: task(function* () {
  return yield 'image.url';
}),

imageUrl: readOnly('fetchImage.lastSuccessful.value')

请参阅该插件的文档,查看它是否适合您的需要。

DS.PromiseObject将结果代理到其内容字段。如果只传入一个字符串,可以使用
{{result.imageUrl.content}
检索它。但是,如果您返回一个对象,那么对
{{result.imageUrl.image}}
的调用将使用代理,这样当您
获取图像时,它将映射到
content.image

就我个人而言,我更喜欢使用
ember并发
满足我的异步需求:

import { readOnly } from '@ember/object/computed';
import { task } from 'ember-concurrency';

fetchImage: task(function* () {
  return yield 'image.url';
}),

imageUrl: readOnly('fetchImage.lastSuccessful.value')

查看插件的文档,看看它是否适合您的需要。

只是一个提示:在es6中,
{promise:promise}
如下所示:
{promise}
只是一个提示:在es6中,
{promise:promise}
如下所示:
{promise}