0

次の例では、新しい Router v2 API を使用して、ember アプリケーションは 1 つの例外を除いて期待どおりに動作します。登録済みの #linkTo ハンドルバーを使用して、動的に作成されたリンクにカーソルを合わせると、URL が未定義と表示されます。

URL にスラッグ フィールドを含めるにはどうすればよいですか?

モデルはこちら

App.Todo = DS.Model.extend({
  slug: DS.attr('string'),
  date: DS.attr('date'),
  updated: DS.attr('date'),
  task: DS.attr('string'),
  description: DS.attr('string')
});

私のルーター

App.Router.map(function(match){
  this.route('index', {path: '/'});
  this.resource('todos', {path: '/todos'}, function(){
    this.resource('create', {path: '/create'});
    this.resource('todo', {path: '/:slug'}, function(){
      this.resource('edit', {path: 'edit'});
    });
  });
});

これが「未定義」と表示されることは知っていますが、これはいいでしょう (ハンドルバー)

{{#each todo in tasks}}
  <div class="user">
    {{#linkTo todo todo.slug}}<h4><i class="icon-list"></i>{{todo.task}}</h4>{{/linkTo}}
     <p>{{todo.description}}</p>
  </div>
{{/each}}

ご指摘ありがとうございます。Ember-dataも使用しています

ここにフィドルの例があります http://jsfiddle.net/R2SPs/6/

4

2 に答える 2

4

これは、残り火ルーティングv2.1(01.16.13)で機能します

IRCの#emberjsのraklのおかげで、ここに問題を解決するミックスインがあります

   App.SlugRouter = Ember.Mixin.create({
        serialize: function(model, params) {
            var name, object;
            object = {};
            name = params[0];
            object[name] = model.get('slug');
            return object;
        }
    });

今、それをルーターとゴールデンに配置するだけです

App.TodoRoute = Ember.Route.extend(App.SlugRouter,{
    //insert your code
});
于 2013-01-18T02:46:47.047 に答える
0

ルートのパスは、リソース定義を含む「todo.index」です。

this.resource('todo', {path: '/:slug'}, ...

そのため、ルートとコントローラーを作成します。

于 2013-01-17T12:49:08.550 に答える