Javascript 如何从路由更新组件的属性?

Javascript 如何从路由更新组件的属性?,javascript,ember.js,Javascript,Ember.js,嗨,我想知道从路由更新组件属性的正确方法是什么 关于我想做什么的一些背景知识: 我有两个自定义按钮,我称之为CardButtons(基于材质设计),旁边是一个名为description的空白区域,我想创建一个悬停事件,触发ajax调用,从数据库中检索详细数据,并在description区域呈现 检查更新 到目前为止,我已经创建了如下路线: export default Ember.Route.extend({ selectedModule: '', model: function () {

嗨,我想知道从路由更新组件属性的正确方法是什么

关于我想做什么的一些背景知识:

我有两个自定义按钮,我称之为CardButtons(基于材质设计),旁边是一个名为description的空白区域,我想创建一个悬停事件,触发ajax调用,从数据库中检索详细数据,并在description区域呈现

检查更新

到目前为止,我已经创建了如下路线:

export default Ember.Route.extend({

selectedModule: '',

model: function () {

    return {
        selectedModule: 'employeeModule'
    };
},


actions: {

    showDescription: function (params) {

        this.set('model.selectedModule', params);

    }

}});
export default Ember.Component.extend({

info: null,
ready: false,

didInsertElement: function () {

    this.queryData();


},

queryData: function (){
     /** Does an Ember.$.post request to the API  with the idTitle as param**/
}
});
我的路线模板按如下方式调用我的组件:

<div class="row">  
   {{sis-db-description-render idTitle=model.selectedModule}}
</div>
第一次执行时,它会完全加载细节数据,但当我尝试刷新数据时,事件不会触发第二次调用。我认为这是因为我没有以正确的方式更新模型

你知道如何更新组件属性吗

更新:

多亏了@kumkanillam,我才能够在我的路线上找到一条路,我添加了下一个代码:

 setupController: function (controller, model) {

    this._super(...arguments); //if its new/index.js route file then you can use controller argument this method.
    controller.set('selectedModule', 'employeeModule');
},


actions: {

    showDescription: function (params) {

        console.info(params);
        this.controllerFor('new.index').set('selectedModule', params);

    }

}

通过现在这样做,视图每次都会更新内容,我仍然不知道这是否是正确的方法,但目前它仍然有效。

在下面的代码中,route中未定义模型。它通过
setupController
hook在相应的控制器中定义

showDescription: function (params) {
  this.set('model.selectedModule', params);
}
因此,在您的情况下,您可以在控制器中定义操作并更新
模型。selectedModule

如果你想在途中做

showDescription: function (params) {
      let cont = this.controllerFor('route-name');
      cont.set('model.selectedModule', params);
    }

didInsertElement
将单独为初始渲染调用。我需要使用什么方法进行更新?据我所知,如果我更新路由上的属性,组件应该重新提交并调用didUpdateAttrs方法,但这不是从未调用didUpdateAttrs的情况。实际上,您没有更新。在路由
this.set('model.selectedModule',params')中此处模型未定义。它是在控制器中定义的。只有一个问题,我读过的所有指南都说你不能使用控制器,所以这让我发疯,我应该使用控制器还是不使用控制器?没问题,你可以很好地使用它。。好的,现在让我试试这个,首先我使用ember g组件新建/索引(我的路由是索引路由),这应该会生成一个控制器,然后??你可以玩这个ember游戏场。我创建它是为了演示Tak you,但是如何使用ember cli创建控制器呢?如果我的路线是新的/索引的,根据文档,名称应该与你的路线相同,给出的例子是blog post,但在我的情况下,我的路线是嵌套索引路线。