2013-03-04 78 views
2

尝试用EmberJS做一些相对基本的客户端设置和一个小型Rails应用程序。我至今两件事情:EmberJS Uncaught TypeError:Object [object Object]没有方法'创建'

  1. 一种形式张贴一本书的销售(不实际创建它尚未)
  2. 书籍页的搜索。 (也希望这是主页)。

第一个加载正常。当我单击应用程序模板中的链接时,表单按预期加载。

但是第二个没有。当我点击链接查看搜索页面时,弹出主题错误。下面的代码我到目前为止:

<script type="text/x-handlebars"> 
    <div class="nav"> 
    {{#linkTo "index_search"}}Home{{/linkTo}} 
    {{#linkTo sale_records.new}}Post a book for sale{{/linkTo}} 
    </div> 
    <div class="container"> 
    {{outlet}} 
    </div> 
</script> 

的Javascript:

// router.js 
(function() { 
    LocalBookFinder.Router.map(function() { 
    this.resource("sale_records", { path: "/sale_records" }, function() { 
     this.route('new'); 
    }); 
    this.route("index_search", { path: "/search" }); 
    }); 

    LocalBookFinder.NewSalesRecordRoute = Ember.Route.extend({ 
    model: function() { 
     return new LocalBookFinder.SaleRecord(); 
    }, 
    setupController: function(controller, model) { 

    } 
    }); 

    LocalBookFinder.IndexSearchRoute = Ember.Route.extend({ 
    setupController: function(controller, model) { 

    } 
    }); 
}).call(this); 

// controllers/search/index_search_controller.js 
(function() { 
    LocalBookFinder.IndexSearchController = Ember.ObjectController.extend({ 

    }); 
}).call(this); 


// views/search/index_search_view.js 

(function() { 
    LocalBookFinder.IndexSearchView = Ember.View.create({ 
    templateName: "search/index" 
    }); 
}).call(this); 

本身呈现优良的链接。但是一旦我点击它,我就会收到错误消息,而且没有任何呈现。有任何想法吗?

+0

我敢打赌,这是范围问题。在不同的函数范围中引用了许多'this'。 – epascarello 2013-03-04 20:50:02

+0

请记住这些是单独的文件。在这些情况下,此功能将关闭窗口。我相信这是coffeescript在大多数情况下封装编译文件的方式。可以简单地使用()而不是.call(this) – agmcleod 2013-03-04 20:51:15

回答

3

设置IndexSearchView时出现错误。它应该是Ember.View.extend,而不是 Ember.View.create。

+0

有趣。 NewSearchView使用创建以及工作正常。切换两个扩展,它的工作。 – agmcleod 2013-03-05 01:04:38

相关问题