1

ビューにチェックボックスを接続しようとしていますが、チェックボックスをオンにするとすぐに、もう一度クリックしてもチェックされたままになりますか?

ビューの一部は次のとおりです。

views.PaginatedView = Backbone.View.extend({
    events: {
        'click input.completedEnquiries': 'filterCompletedEnquiries'
    },
    filterCompletedEnquiries: function (e) {
        return e.currentTarget.checked;
    }
});

テンプレートは次のとおりです。

<label>Show Completed: <input type="checkbox" class="completedEnquiries" /></label>

ここで何が間違っているのかわかりませんか?

編集

これが問題のJsfiddleです:http://jsfiddle.net/9cvVv/167/

4

1 に答える 1

6

e.currentTarget.checked問題は、イベントハンドラーから戻ってきたことです。trueこのハンドラーから、またはこのハンドラーから戻るfalseと、チェックボックスがオンまたはオフになります


 filterCompletedEnquiries: function(e) {
        //return e.currentTarget.checked;
    },

そのreturnステートメントをコメントアウトすると、正常に機能します。情報を取得することはできますが、メソッドから何も返さないでください。


 filterCompletedEnquiries: function(e) {
        var isChecked = e.currentTarget.checked;
        // do stuff here, based on it being checked or not
    },

編集

コメントの会話に基づいた例を次に示します。


views.PaginatedView = Backbone.View.extend({
    events: {
        'click input.completedEnquiries': 'completedEnquiriesClicked'
    },

    // this is explicitly an event handler, and that's all it should be used for
    completedEnquiriesClicked: function(e){
      this.showCompletedEnquiries = e.currentTarget.checked;
    },

    doSomething Else: function (e) {
        // now that we need to know, we can just check that attribute
        if (this.showCompletedEnquiries){
          // do something here
        }
    }
});

これは、これを希望どおりに機能させるための多くのオプションの1つにすぎません。

于 2012-08-30T11:56:56.907 に答える