0

正如大多数 Emberists 所知道的那样,我现在正处于撕扯头发的过程中,试图克服 EmberJS 所拥有的垂直墙,以便我能够到达巅峰时的天堂。

这是我目前所拥有的:

  <script type="text/x-handlebars" data-template-name="dogs">
    <h2> Pick a stack to view its cards </h2>
    <ul class="nav">
      {{#each model}}
      <li>{{#linkTo 'dog' this}} {{name}} {{/linkTo}}</li>
      {{/each}}
  </script>

我的路线是这样定义的:

App.Router.map(function(){
this.resource('dogs);
this.resource('dog', '/:dog_id');
});

因此,DogRoute 的模型钩子定义为:

App.DogRoute = EmberRoute.Extend({
   model: function(params){
   return App.Dog.find(params.id);
   }

});

最后,该模型本身非常基本:

App.Dog = DS.Model.extend({
    name = DS.attr('string')
});

就我而言,DS 是一堆固定装置,所以我不会费心把它写下来。但是,这不起作用,我不知道为什么。这是我在访问狗路线时不断遇到的错误,并期望呈现一堆指向狗的链接:

ember-...rc.5.js(第 356 行)未捕获的异常:传递的上下文对象多于路由的动态段:dog

谁能指出这里做错了什么?

注意:如果我删除动态段并简单地在我的狗车把内渲染一条狗路线(从车把上取下),那么链接(狗名)会被渲染。但是,我需要这些路由是动态段,而不仅仅是带有由 ember/handlebars 自动生成的唯一 ID 的超链接。

4

2 回答 2

3

您的路由器声明错误。我应该更像这样:

App.Router.map(function() {
  this.resource('dogs');
  this.resource('dog', {path: '/:dog_id'});
});
于 2013-06-17T03:25:27.943 回答
1

你得到的错误

ember-...rc.5.js(第 356 行)未捕获的异常:传递的上下文对象多于路由的动态段:dog

可能与您的路线映射有关。您应该像这样定义路由:

App.Router.map(function() {
  this.resource('dogs', function() {
    this.resource('dog', {path: '/:dog_id'});
  });
});

此外,由于这是 ember 的默认行为,(请参阅此处的动态模型):

App.DogRoute = EmberRoute.Extend({
  model: function(params){
    return App.Dog.find(params.id);
  }
});

您不需要明确定义它,因此您可以将其删除。据我所知,其余的接缝是正确的。我还把一个工作jsbin放在一起,看看。

希望能帮助到你。

于 2013-06-17T10:02:36.310 回答