emberjs没有处理事件

时间:2013-04-15 09:54:59

标签: javascript jquery ember.js

我尝试重现搜索字段,就像它们在emberjs.com处显示的那样但是由于某种原因,我的代码在输入查询时按下输入或单击提交按钮时会产生以下错误(在谷歌浏览器中):

Uncaught Error: Nothing handled the event 'MyApp.ApplicationController.doSearch'.

我正在使用的代码可以在http://jsfiddle.net/Mn2yy/

查看

有人可以解释为什么会出现这个错误以及我需要做些什么才能解决它?

编辑:如果链接断开,这些是代码的相关部分:

搜索页面路线:

MyApp.SearchRoute = Ember.Route.extend({
    setupController: function(controller) {
        controller.set('searchQuery', this.get('query'));
    },

    renderTemplate: function() {
        this.render('searchpage', { into: 'container' });
    }
});

的ApplicationController:

MyApp.ApplicationController = Ember.Controller.extend({
    // the initial value of the `search` property
    search: '',

    doSearch: function() {
        // the current value of the text field
        var query = this.get('search');
        this.transitionToRoute('search', { query: query });
    }
});

和模板:

<script type="text/x-handlebars" data-template-name="container">
    <button {{action "doSearch" target="MyApp.ApplicationController"}} rel="tooltip-bottom" title="search" class="icon"><i class="icofont-search"></i></button>
    {{view Ember.TextField valueBinding="MyApp.ApplicationController.search" action="MyApp.ApplicationController.doSearch"}}

    {{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="searchpage">
    <h1>Search</h1>
    {{#linkTo "home"}}Homepage{{/linkTo}}
    <p>You searched for: "{{searchQuery}}"</p>
</script>

1 个答案:

答案 0 :(得分:2)

您不应将绝对路径用于绑定,目标等,例如MyApp.ApplicationController.search

由于您在应用程序控制器上声明了search属性和doSearch操作,只需输入:{{view Ember.TextField valueBinding="search" action="doSearch"}}