【问题标题】:EmberJS Dynamic segment errorEmberJS 动态段错误
【发布时间】:2013-06-17 18:02:36
【问题描述】:

正如大多数 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 是一堆固定装置,所以我不会费心把它写下来。但是,这不起作用,我不知道为什么。这是我在访问 dog 路线时不断遇到的错误,并期望呈现一堆指向 dog 的链接:

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

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

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

【问题讨论】:

    标签: ember.js ember-router


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      你得到的错误

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

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

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

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

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

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

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多