jQuery Autocomplete Plugin using Backbone JS

蓝咒 提交于 2020-02-03 10:19:29

问题


Let's suppose I want to use jQueryUi for implemeting autocomplete in a backboneView having a form.

I implement the following code (*), but I don't like it because the fetching of the collection is performed also when the user does not type any letter.

How should I perform the fetching collection only when the user starts to type something in the input box?

var MyView = Backbone.View.extend({
    initialize: function () {
        this.myCollection = new MyCollection();
        this.myCollection.fetch(); // I would like to fetch the collection 
                                   // only when the user start to type the first letter  
    },
    events: {
        'focus #names': 'getAutocomplete'
    },

    getAutocomplete: function () {
        $("#names").autocomplete({
            source: JSON.stringify(this.myCollection)
        });
    }
});

P.S.:
the fetching should be performed just one time when the user types the first letter.


回答1:


This should work and only call fetch once.

var MyView = Backbone.View.extend({
  initialize: function () {
    this.myCollection = new MyCollection();
    this.collectionFetched = false;
  },
  events: {
    'focus #names': 'getAutocomplete'
    'keydown #names': 'fetchCollection'
  },
  fetchCollection: function() {
    if (this.collectionFetched) return;
    this.myCollection.fetch();
    this.collectionFetched = true;
  },
  getAutocomplete: function () {
    $("#names").autocomplete({
        source: JSON.stringify(this.myCollection)
    });
  }
});



回答2:


try like this :

var MyView = Backbone.View.extend({
    initialize: function () {
        this.myCollection = new MyCollection();

    },
    events: {
        'focus #names': 'getAutocomplete',
        'keydown #names':'invokefetch'
    },
    invokefetch : function(){
       this.myCollection.fetch(); 
       $("#names").unbind( "keydown", invokefetch);
    },    
    getAutocomplete: function () {
        $("#names").autocomplete({
            source: JSON.stringify(this.myCollection)
        });
    }
});


来源:https://stackoverflow.com/questions/11413430/jquery-autocomplete-plugin-using-backbone-js

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!