ember.js 如何在Ember中检索静态数据?

iibxawm4  于 2022-11-05  发布在  其他
关注(0)|答案(3)|浏览(132)

我模型中有几个具有状态列表的属性:
thing.js

...
status: DS.attr('number'),
statesValues: {1 : "First",2: "Some Choice", 3: "Nothing"}
...

我如何在另一个ember对象中访问Thing模型中的值?我尝试导入模型,但我甚至不知道导入的正确路径。

bvn4nwqk

bvn4nwqk1#

我认为service将是一个很好的解决方案,可以在Ember.js应用程序中共享静态数据,并在需要时注入数据。

// app/services/static-data.js

import Service from '@ember/service';
import { computed } from '@ember/object'

export default Service.extend({
  statesValues: computed(function() {
    return { 1: 'First', 2: 'Second', 3: 'Third' };
  })
});

那么您可以将它注入到应用程序、组件、模型、控制器等的任何地方。

// app/models/thing.js

import DS from 'ember-data';
import { inject as service } from '@ember/service';

export default DS.Model.extend({
  staticData: service()

  ....
});
ztyzrc3y

ztyzrc3y2#

您需要使用下面所述的方法之一从存储中获取模型:https://guides.emberjs.com/release/models/finding-records/

  • 对于现有记录 *
const myModel = await this.store.findRecord('thing', 1);
console.log(myModel.get('statesValues'));
  • 对于新记录 *
const myModel = this.store.createRecord('thing', { /* optional defaults go here, e.g., `status: 2,` */ });
console.log(myModel.get('statesValues'));
goqiplq2

goqiplq23#

最后,我在模型中添加了以下内容:

export const statusValues ={...}

为了使用它,我根据需要导入它:

import {statusValues} from 'app-name/models/model-name'

相关问题