1

私は js mvc を比較してきましたが、多くの人が canjs の「ライブ バインディング」を自慢していることに気付きました。backbonejs、spineなどの他の人気のあるmvcと比較して、それが正確に何であり、どのように役立つかを誰かが説明できますか...

4

2 に答える 2

6

ライブ バインディングを使用するのは、CanJS ではすべてのコードを次のように置き換えるためです。

<h1><%= model.attr('name') %></h1>

于 2012-09-07T16:13:06.873 に答える
3

Backbone はモデル バインディングの実装をサポートしていますが、AngularJSのデータ バインディングng-controllerEmberJSbindAttr.

モデルの状態が変化したときにビューを更新する非常に初歩的なコードについては、次の例のようにBackbone.Vieweventsobjectを使用します。

var ExampleView = Backbone.View.extend({
    id: 'myView',

    events: {
        // using an #id selector here is also acceptable
        'change [data-attrname=name]': function(e) {
            // update the value in the model
            this.model.set('name', $(e.target).val());
        }
    },

    initialize: function(options) {
         this.model.on('change', this.render, this);
    },

    render: function() {
        var html = _.template('<h1 data-attrname="name"><%= name %></h1>', 
                              this.model.toJSON());
        this.$el.html(html);
        return this;
    }
});

次の HTML をレンダリングします (これmyViewは、ExampleView によって暗黙的に作成された div です)。

<div id="myView">
    <h1 data-attrname="name"></h1>
</div>

これは基本的に、UI から手動でバインディングを行いrender、モデルが変更されたときにホールセール (ビュー全体を reing) を行います。Backbone は、他のライブラリの追加に合わせて適切と思われるものを実装できるように、意図的に他のフレームワークよりも独断的にならないように設計されています。

モデル バインドをより自動的に行うためのより高度な手法については、作成者がリストしたいくつかのリソースを次に示します。

  1. Los Techies / デレク・ベイリー
  2. 彼らのクック
  3. XTarget
于 2012-07-27T21:05:32.327 に答える