无法从 ember 中的路线操作获取模型
cant get model from route action in ember
我只想在从控制器获取动作的同时刷新路线中的模型,然后 运行 在此路线中执行刷新动作
这是我的代码
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);
};
}
}
});
不幸的是,这不会影响 profileFormsAttributes 模型。
我一直在尝试用这个调试模型
this.debug(this.get('controller.model.profileFormsAttributes'))
this.debug(this.get('model.profileFormsAttributes'));
但控制台日志显示未定义
你能解决这个问题并解释一下我的路线中发生了什么吗..
感谢您的关心
您的问题是您无法像 this.get('profileFormsAttributes')
那样直接从操作处理程序中的路由中实现对象 return;因此您的设置不起作用。
this.get('controller.model.profileFormsAttributes');
this.get('model.profileFormsAttributes');
即使以上两种说法也行不通;因为您无法像这样检索 model
或 controller
。
你有两个选择;您需要直接在 model
钩子 this.set('model', model)
中从模型中保存您要 return 的内容,或者您可以使用 this.controllerFor(this.get('routeName')).get('model')
来实现它
我会为你的情况推荐第二种方法。请看下面的twiddle我准备的案例给大家看一下
请查看 index.js
,其中从 model
挂钩中设置对象 return 的 foo
属性设置为
Ember.set(this.controllerFor(this.get('routeName')).get('model'), 'foo', 'foo updated');
希望对您有所帮助。
我只想在从控制器获取动作的同时刷新路线中的模型,然后 运行 在此路线中执行刷新动作
这是我的代码
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);
};
}
}
});
不幸的是,这不会影响 profileFormsAttributes 模型。
我一直在尝试用这个调试模型
this.debug(this.get('controller.model.profileFormsAttributes'))
this.debug(this.get('model.profileFormsAttributes'));
但控制台日志显示未定义
你能解决这个问题并解释一下我的路线中发生了什么吗..
感谢您的关心
您的问题是您无法像 this.get('profileFormsAttributes')
那样直接从操作处理程序中的路由中实现对象 return;因此您的设置不起作用。
this.get('controller.model.profileFormsAttributes');
this.get('model.profileFormsAttributes');
即使以上两种说法也行不通;因为您无法像这样检索 model
或 controller
。
你有两个选择;您需要直接在 model
钩子 this.set('model', model)
中从模型中保存您要 return 的内容,或者您可以使用 this.controllerFor(this.get('routeName')).get('model')
我会为你的情况推荐第二种方法。请看下面的twiddle我准备的案例给大家看一下
请查看 index.js
,其中从 model
挂钩中设置对象 return 的 foo
属性设置为
Ember.set(this.controllerFor(this.get('routeName')).get('model'), 'foo', 'foo updated');
希望对您有所帮助。