为什么按钮上的Action事件不会调用控制器功能

时间:2013-09-24 20:47:51

标签: ember.js

我有一个index.html文件,其中有一个带有动作处理程序的按钮。

<button {{action 'modules'}} > press </button>

但按下按钮时没有任何反应。

请查看jsbin上的代码:

http://jsbin.com/OREMORe/1/edit

随意纠正任何其他不一致之处。 感谢任何帮助。 THX。

1 个答案:

答案 0 :(得分:1)

你会像this那样做。请注意,您的代码存在一些问题:

1)您的手柄代码中包含的按钮未包含在手柄script标记中 2)您的'模块'模板位于应用程序模板中 3)您没有包含必要库的有效链接 4)没有为应用程序指定rootElement 5)您试图访问ModulesController中的ApplicationRoute。我插入了一个重定向到'模块' 6)您试图在module循环中访问{{#each}},但模型中不存在此问题。你想要的是content

<script type="text/x-handlebars" data-template-name="application">
{{outlet}}
</script>

<script type="text/x-handlebars" data-template-name="modules">
    <ul>
      {{#each content}}
      <li>{{this}}</li>
      {{/each}}
        <button {{action 'modules'}} > press </button>
    </ul>
  </script> 

var Test1 = Ember.Application.create({
  rootElement: 'body',
    ready: function() {
        console.log("App ready1");
    }
});

Test1.IndexRoute = Ember.Route.extend({
  redirect: function() {
    this.transitionTo('modules');
  }
});


Test1.Router.map( function() {
    this.route('modules');
});

Test1.ModulesController = Ember.Controller.extend({
    actions: {
        modules: function() {
            console.log('clicked the button');
/*            this.transitionToRoute('modules');*/
        }
    }
});
Test1.ModulesRoute = Ember.Route.extend({
    model: function() {
        return ['item1', 'item2'];
     }
});