1

これが私のハンドルバーテンプレートの linkTo ヘルパーです

{{#linkTo 'person.page' nextPage target="controller"}}Next{{/linkTo}}

これが私のコントローラーです

PersonApp.PersonController = Ember.ArrayController.extend(Ember.PaginationMixin, {
    itemsPerPage: 2
});

これは、ミックスインの計算されたプロパティです

  nextPage: function() {

    var nextPage = this.get('currentPage') + 1;
    var availablePages = this.get('availablePages');

    if (nextPage <= availablePages) {
        return Ember.Object.create({id: nextPage});                                 
    }else{
        return Ember.Object.create({id: this.get('currentPage')});
    }   

  }.property('currentPage', 'availablePages'),

各 return ステートメントの直前にログをコンソールに表示すると、ページ ID が正しいことがわかりますが、html は更新されていません。上記で間違っていることは簡単ですか?

また、ページを変更するたびに印刷が表示されます(したがって、依存する計算されたプロパティが起動されます)

これは、最初に次にクリックした後... /#/page/3ではなく/#/page/2を指していることを示す本格的なjsfiddleです。

http://jsfiddle.net/RhTyx/2/

前もって感謝します

4

1 に答える 1

1

最初に: 最も重要なコードがフィドル (FilterSortSliceMixin) の一部ではないフィドルをリンクしないとよいでしょう。したがって、フィドルが非常に巨大で、多くの不要なコードが含まれていたにもかかわらず、何もテストすることはできません。

あなたの問題について: 指定した依存プロパティが何もしないため、これは機能しないと思います。{{#linkTo}} ヘルパーは、ユーザーを PersonPageRoute に送ります。このルートのコードは次のとおりです。

PersonApp.PersonPageRoute = Ember.Route.extend({
    model: function(params) {
        return PersonApp.Person.find(params.page_id);
    },
    setupController: function(controller, model) {
        this.controllerFor('person').set('selectedPage', model.get('id'));
    }
});

したがって、 personcontroller を取得してプロパティを設定しますselectedPage。ただし、このプロパティは依存キーでは指定されていません。したがって、私はこれを提案します:

//maybe even remove currentPage??
}.property('currentPage', 'availablePages' , 'selectedPage'),

だからネーミングで迷ったのでしょう。プロパティ「selectedPage」または「currentPage」のいずれかが必要だと思いますよね?

更新:これは間違いなくバグです。linkTo ヘルパーで使用される LinkView クラスからの抜粋を次に示します。

var LinkView = Ember.View.extend({
  attributeBindings: ['href', 'title'], 
  href: Ember.computed(function() {
      var router = this.get('router');
      return router.generate.apply(router, args(this, router));
  })
});

ご覧のとおり、依存キーは指定されていません。おそらく、このクラスを再度開いてパッチを適用し、依存キーを追加できます。これがどれでなければならないかわかりませんが、多分context

于 2013-03-16T12:47:04.223 に答える