Ember 2.0:为什么我的行动不是在路线上触发的

时间:2016-03-23 17:03:12

标签: ember.js ember-cli

我正在尝试将测试应用程序从Ember 1.0移动到Ember 2.0

我写了一个索引模板,带有一个动作事件' alert'

(Pdb) p phash_tracks
<Swig Object of type 'track_t **' at 0x7fb9e37c9030>

我编写了一个application.js控制器来初始化属性

<table id="t01">
      <tr>
        <th>Company Name</th>
      </tr>
      {{#each model as |item|}}
        <tr>
          <td {{action "alert" "alert form company name" }}>{{item.name}}</td>
        </tr>
      {{/each}}
</table>

我还有一个index.js控制器来在索引控制器级别执行一些逻辑

import Ember from 'ember';
export default Ember.Controller.extend({
  className:"hide",
  message: ""
});

最后我有一个带有&#39;警告&#39;的路由/ application.js。定义了事件处理程序,以更新应用程序控制器属性(className,message)

import Ember from 'ember';
export default Ember.Controller.extend({
  actions:{
    alert: function(){
      console.log("do some controller level processing");
      return true;
    } 
  }
});

以及用于提供模型数据的routes / index.js

但它在Ember.js 2.0(运行2.4.2)中无法正常工作 并且控制台中没有错误消息,我只获得索引控制器控制台日志输出

似乎触发了路由/ application.js中的警报操作,正确接收了消息,但未设置属性... 我可以获得应用程序控制器吗?与

import Ember from 'ember';
export default Ember.Route.extend({
  actions:{
    alert: function(message){
      var applicationController = this.controllerFor("application"); 
      applicationController.set("className","alert"); 
      applicationController.set("message",message);
      Ember.run.later(function(){
        applicationController.set("className","hide");
      },2000);
    }
  }
});

感谢您的反馈

1 个答案:

答案 0 :(得分:0)

解决了

应用程序模板没有正确的类(div中的“className”属性...因此正确处理了警报操作,但模板中没有发生任何更改..