使用Backbone.js级联选择框

时间:2014-02-06 08:48:25

标签: javascript php jquery codeigniter backbone.js

我找到了这个有用的链接http://blog.shinetech.com/2011/07/25/cascading-select-boxes-with-backbone-js/

如何将这些宁静的响应填充到大陆选择标记:

{"_count":6,"data":[{"id":"6","continent":"NORTH AMERICA","code":"NA","sort_order":"6","published":"1","date_created":"2014-02-02 13:16:54","createdbypk":"1","date_modified":"2014-02-02 21:17:10","modifiedbypk":"1"},{"id":"1","continent":"ASIA","code":"AS","sort_order":"1","published":"1","date_created":"2014-02-02 12:31:42","createdbypk":"1","date_modified":"2014-02-02 21:16:31","modifiedbypk":"1"}]}

这是我的js代码:

$(function () {
     var Continent = Backbone.Model.extend();
     var Country = Backbone.Model.extend();
     var Continents = Backbone.Collection.extend({
         url: BASE_URL + 'api/continents',
         model: Continent
     });
     var Countrys = Backbone.Collection.extend({
         model: Country
     });
     var LocationView = Backbone.View.extend({
         tagName: "option",
         initialize: function () {
             _.bindAll(this, 'render');
         },
         render: function () {
             console.log(this.model);
             $(this.el).attr('value', this.model.get('id')).html(this.model.get('continent'));
             //attr('value', this.model.get('id')).
             //$(this.el).html(this.model.get('continent'));
             return this;
         }
     });
     var LocationsView = Backbone.View.extend({
         events: {
             "change": "changeSelected"
         },
         initialize: function () {
             _.bindAll(this, 'addOne', 'addAll');
             this.collection.bind('reset', this.addAll);
         },
         addOne: function (continent) {
             $(this.el).append(new LocationView({
                 model: continent
             }).render().el);
         },
         addAll: function () {
             this.collection.each(this.addOne);
         },
         changeSelected: function () {
             this.setSelectedId($(this.el).val());
         }
     });
     var ContinentsView = LocationsView.extend({
         setSelectedId: function (countryId) {
             this.countrysView.collection.url = BASE_URL + "api/country/id/" + countryId;
             this.countrysView.collection.fetch();
             $(this.countrysView.el).attr('disabled', false);
         }
     });
     var CountrysView = LocationsView.extend({
         setSelectedId: function (countryId) {
             // Do nothing - for now
         }
     });
     var continents = new Continents();
     var continentsView = new ContinentsView({
         el: $("#continent"),
         collection: continents
     });
     var countrysView = new CountrysView({
         el: $("#country"),
         collection: new Countrys()
     });
     new LocationsView({
         el: $("#continent"),
         collection: continents
     });
     new LocationsView({
         el: $("#country"),
         collection: new Countrys()
     });
     continents.fetch();
 });

这是我的表格

<form>
 Continent:<select id="continent"><option value=''>Select</option></select>
 Country:<select id="country" disabled="disabled"><option value=''>Select</option></select> 
 Company:<select id="company" disabled="disabled"><option value=''>Select</option></select>
</form> 

0 个答案:

没有答案