我只想在路线中刷新模型,同时从控制器获取动作并在此路线中运行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);
};
}
}
});
但控制台日志表示未定义
你可以解决这个问题并解释我的路线会发生什么......
感谢您的关注
答案 0 :(得分:1)
您的问题是您无法像this.get('profileFormsAttributes')
那样直接在动作处理程序中实现从路径内返回的对象;因此你的设置不起作用。
this.get('controller.model.profileFormsAttributes');
this.get('model.profileFormsAttributes');
即使上述两个陈述也不起作用;因为您无法像这样检索model
或controller
。
你有两种选择;您需要在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;
}
}`
我希望这会有所帮助。