无法从ember的路线行动中获得模型

时间:2017-04-11 15:44:21

标签: javascript ember.js ember-data ember-router ember-controllers

我只想在路线中刷新模型,同时从控制器获取动作并在此路线中运行doRefresh动作

这是我的代码

struct S { int mi; const std::pair<int,int>& mp; };
S a { 1, {2,3} };
S* p = new S{ 1, {2,3} };   // Creates dangling reference

遗憾的是,这不会影响profileFormsAttributes模型。

我试图用这个

来调试模型
    import Ember from 'ember';

export default Ember.Route.extend({
  profileFormService: Ember.inject.service(),
  profileFormAtributeService: Ember.inject.service(),
  model(){
    return Ember.RSVP.hash({
      profileForms: this.get('profileFormService').find(),
      profileFormsAttributes: this.get('profileFormAtributeService').findByProfileFormId("1"),
      inputTypes: {data: ['CHECKBOX', 'NUMBER_FIELD', 'PHONE_NUMBER', 'TEXT_FIELD', 'EMAIL', 'TEXT_AREA', 'RADIO_BUTTON', 'DESA', 'KABUPATEN_KOTA', 'PROVINSI', 'KECAMATAN', 'MAP_POINT', 'MAP_POLYGON']}
    });
  },
  setupController(controller, model) {
    this.controllerFor('backend.setting-profile-form-attribute').set('profileForms', model.profileForms);
    this.controllerFor('backend.setting-profile-form-attribute').set('profileFormsAttributes', model.profileFormsAttributes);
    this.controllerFor('backend.setting-profile-form-attribute').set('inputTypes', model.inputTypes);
  },
  actions:{
    doRefresh(param){
      let context = this;
      this.get('profileFormAtributeService').findByProfileFormId(param).then(function (response) {
        context.set("profileFormsAttributes",response);
      }), function (e) {
        this.debug(e);
      };
    }
  }
});

但控制台日志表示未定义

你可以解决这个问题并解释我的路线会发生什么......

感谢您的关注

1 个答案:

答案 0 :(得分:1)

您的问题是您无法像this.get('profileFormsAttributes')那样直接在动作处理程序中实现从路径内返回的对象;因此你的设置不起作用。

this.get('controller.model.profileFormsAttributes');
this.get('model.profileFormsAttributes');

即使上述两个陈述也不起作用;因为您无法像这样检索modelcontroller

你有两种选择;您需要在model this.set('model', model) this.controllerFor(this.get('routeName')).get('model')内直接保存您要从模型返回的内容,或者您​​可以使用index.js

来实现

我会为你的案子推荐第二种方法。请查看我准备为您说明案例的以下twiddle

请查看foo model挂钩从Ember.set(this.controllerFor(this.get('routeName')).get('model'), 'foo', 'foo updated'); 挂钩返回的tools:text="this text will only appear in the layout editor" 属性设置为

public GameObject[] arrows;
public float interval = 5;

// Use this for initialization
void Start()
{
    StartCoroutine(SpawnArrow());
}
public IEnumerator SpawnArrow()
{
    WaitForSeconds delay = new WaitForSeconds(interval);
    while (true)
    {
        GameObject prefab = arrows[UnityEngine.Random.Range(0, arrows.Length)];
        GameObject clone = Instantiate(prefab, new Vector3(0.02F, 2.18F, -1), Quaternion.identity);
        yield return delay;


    }
}`

我希望这会有所帮助。