2

下記参照。

まず、スクリプトは Github API から 4 つのアイテムを取得し、リストをレンダリングします。「次へ」ボタンを送信すると、スクリプトは Get リクエストを再送信した後、リストを再描画します。

GET リクエスト。

repo.Repo.getList = function (api) {
    return m.request({
        method: "GET",
        url: api,
        type: repo.Repo,
        extract: repo.linkHeader.setLinkHeader,
        initialValue: []
    })
        .then(function (data) {
        // bad solution.
        return repo.vm.list(repo.vm.list().concat(data));
    });
};

連結配列。

repo.vm.api(links['next'])
return m('button', {onclick: repo.vm.add}, 'NEXT');

期待どおりに動作します。でも、それは悪い解決策ですね。この連結処理は View-Model (repo.vm) で完了する必要があると思います。

何か良い方法はありますか?それともこれでいいの?

4

1 に答える 1

1

メソッド内のものを変更することは理想的ではありませんview。再描画は非常に迅速に行われる可能性があるため、状態のみを表示するビューをテンプレートと考えてください。代わりに、コントローラーにリクエストを実行させ、リクエストが終了したときに状態を変更する必要があります。するとビューが表示されます。

コードに関しては、「構造が多すぎる」ことに少し深いと思います。ビューモデル、LinkHeaderプロトタイプがあり、プログラム フローはいたるところにジャンプします。メンタル モデルは非常に単純なので、物事を抽象的で複雑にするだけのパターンに陥るのではなく、そのままにしておいてください。

これが私の見解です:https://jsfiddle.net/ciscoheat/akwdqhpx/

パーサーは同じですが、その後、コードを圧縮してローカルに保つように努めたので、コードの一部を見て理解できるようになりました。これは、局所性と結束に関する非常に優れた記事です。また、メンタル モデルに近づけるために、いくつかの名前を変更しました。

于 2015-11-21T01:13:29.263 に答える