1

jQuery.select2 プラグインを使用しようとしています。Backbone.js と RequireJS で記述されたフォームの一部です。クエリ/検索機能を書いていますが、何らかの解析エラーが発生していて、見つけることができません。

ビューのコードは次のとおりです。

define([
    'backbone',
    'jquery.select2'
],
function(Backbone, Select2) {

    var notificationSelector = Backbone.View.extend({

        notifications: undefined,

        // events:
        // {
        //  // type letter into box EVENT --> filter populated email list 
        // },

        initialize: function(attrs) {
            this.collection.on('add remove reset', this.render(), this);
            /* select2 Event s.t. call "select2ContactsChanged" ? */

        },

        /*
            <><><><><><><><>
            Getting a syntax / parseerror in the AJAX call below?
            What am I missing?
        */

        render: function() {
            /* DEVELOPMENT SETUP */
                // plucking by "caption" will need to be changed...
            if(this.select2Control == undefined) 
            {
                // Do Search() + query here
                // this.select2Control = this.$el.val(this.collection.pluck('caption').join(' ')).select2({
                this.select2Control = this.$el.select2({
                    width: '200px',
                    placeholder: '@email',
                    tags: [],
                    minimumInputLength: 3,

                    query: function() {
                        $.ajax({
                            url: "/notifications/search",
                            dataType: 'json',
                            type: 'GET',
                            //data: {  }, 

                            success: function(data) {
                                /* DEBUG */
                                console.log('AJAX Success!');
                                console.log(data);
                            },

                            error: function(jqXHR, status, error) {
                                    /* DEBUG */
                                console.log('<Failure>');
                                console.log(jqXHR);
                                console.log('-------------------------');
                                console.log(status);
                                console.log('-------------------------');
                                console.log(error);
                            }

                        });
                    }   // END-OF query: function()
                });
            }
            else
            {
                // Go off of what's currently in the Collection and re-render

            }

            // this.$el.select2('data', this.model);
        },

        select2ContactsChanged: function() {
            // when this gets called update this.collection to reflect the this.select2Control's val()

            this.collection.reset(this.select2Control.val().split(' '));
        }

    });

    return notificationSelector;
});

エラー コールバックは parseerror /syntax エラーがあることを教えてくれます (私は Chrome の Web インスペクターのネットワーク セクションを使用しています) が、それを見つけることができないようです。何が欠けているのか、なぜそのエラーが発生するのか、誰にもわかりますか?

御時間ありがとうございます!

4

1 に答える 1

0

jQuery プラグインを使用するときはいつでも、jQuery を操作する必要があります。また、RequireJS 構成が正しいことを確認する必要があります。プラグインがモジュールとしても書かれている場合に最適です。

あなたの場合、jQuery からの依存関係も含める必要があり、プラグインをパラメーターにマップする必要はありません。これは jQuery プラグインであるためです。あなたはそれを使うだけです。依存配列は、それがロードされることを確認するだけです。

define([
    'backbone',
    'jquery',
    'jquery.select2'
],
function(Backbone, $) {
    // ...
    $('#element').select2();
});

私は最近RequireJS についてブログを書き、jQuery プラグインをどのように扱うべきかを説明しています。

あなたが得ているエラーは、あなたが送り返しているJSONをjQueryが解析しようとしているときだと思います。JSON 形式が有効であることを確認してください。http://jsonlint.com/を使用して検証できます

于 2013-05-31T18:37:17.310 に答える