当前位置:小鱼儿玄机二站 > 操作系统 > Javascript MVC框架Backbone.js详解

Javascript MVC框架Backbone.js详解

文章作者:操作系统 上传时间:2019-09-08

乘胜JavaScript程序变得越来越复杂,往往需求八个团伙合营开辟,那时期码的模块化和公司行业内部就变得极其首要了。MVC形式正是代码组织的经文情势。

Javascript MVC框架Backbone.js详解,mvcbackbone.js

趁着JavaScript程序变得越来越复杂,往往供给一个公司合营开垦,这时期码的模块化和团协会职业就变得特别主要了。MVC方式就是代码组织的经文情势。

(……MVC介绍。)

(1)Model

Model表示数据层,也等于程序须求的数据源,平常选取JSON格式表示。

(2)View

View代表展现层,也正是客户分界面,对于网页来讲,正是客户看到的网页HTML代码。

(3)Controller

Controller表示调整层,用来对原来数据(Model)实行加工,传送到View。

鉴于网页编制程序不一致于顾客端编程,在MVC的基本功上,JavaScript社区时有发生了各类变体框架MVP(Model-View-Presenter)、MVVM(Model-View-ViewModel)等等,有人就把具备这一类框架的各个情势统称为MV*。

框架的优点在于合理协会代码、便于共青团和少先队协作和今后的保卫安全,瑕疵在于有分明的上学开销,且范围你不得不动用它的写法。

Backbone的加载

复制代码 代码如下:

<script src="/javascripts/lib/jquery.js"></script>
<script src="/javascripts/lib/underscore.js"></script>
<script src="/javascripts/lib/backbone.js"></script>
<script src="/javascripts/jst.js"></script>
<script src="/javascripts/router.js"></script>
<script src="/javascripts/init.js"></script>

Backbone.View

着力用法

Backbone.View方法用于定义视图类。

复制代码 代码如下:

var AppView = Backbone.View.extend({
  render: function(){
    $('main').append('<h1>超级标题</h1>');
  }
});

上边代码通过Backbone.View的extend方法,定义了一个视图类AppView。该类内部有一个render方法,用于将视图放置在网页上。

利用的时候,须求先新建视图类的实例,然后经过实例,调用render方法,进而让视图在网页上显得。

复制代码 代码如下:

var appView = new AppView();
appView.render();

地点代码新建视图类AppView的实例appView,然后调用appView.render,网页上就能够议及展览示内定的原委。

新建视图实例时,通常须要钦命Model。

复制代码 代码如下:

var document = new Document({
  model: doc
});

initialize方法

视图还是能够定义initialize方法,生成实例的时候,会自动调用该措施对实例开首化。

复制代码 代码如下:

var AppView = Backbone.View.extend({
  initialize: function(){
    this.render();
  },
  render: function(){
    $('main').append('<h1>一级题目</h1>');
  }
});
var appView = new AppView();

地点代码定义了initialize方法之后,就省去了更动实例后,手动调用appView.render()的步调。

el属性,$el属性

除去直接在render方法中,钦命“视图”所绑定的网页成分,还足以用视图的el属性内定网页成分。

复制代码 代码如下:

var AppView = Backbone.View.extend({
  el: $('main'),
  render: function(){
    this.$el.append('<h1>超级标题</h1>');
  }
});

地点的代码与render方法间接绑定网页成分,效果一模二样。下面代码中,除了el属性,照旧$el属性,后面一个代表内定的DOM成分,前面一个则代表该DOM成分对应的jQuery对象。

tagName属性,className属性

如若不内定el属性,也得以由此tagName属性和className属性钦定。

复制代码 代码如下:

var Document = Backbone.View.extend({
  tagName: "li",
  className: "document",
  render: function() {
   // ...
  }
});

template方法

视图的template属性用来钦命网页模板。

复制代码 代码如下:

var AppView = Backbone.View.extend({
      template: _.template("<h3>Hello <%= who %><h3>"),
});

地点代码中,underscore函数库的template函数,接受贰个模板字符串作为参数,再次来到对应的沙盘函数。有了那一个模板函数,只要提供切实的值,就会生成网页代码。

复制代码 代码如下:

var AppView = Backbone.View.extend({
      el: $('#container'),
      template: _.template("<h3>Hello <%= who %><h3>"),
      initialize: function(){
        this.render();
      },
      render: function(){
        this.$el.html(this.template({who: 'world!'}));
      }
});

下面代码的render就调用了template方法,进而生成具体的网页代码。

骨子里使用中,一般将模板放在script标签中,为了防范浏览器依据JavaScript代码剖判,type属性设为text/template。

复制代码 代码如下:

<script type="text/template" data-name="templateName">
    <!-- template contents goes here -->
</script>

能够行使下边包车型地铁代码编写翻译模板。

复制代码 代码如下:

window.templates = {};
var $sources = $('script[type="text/template"]');
$sources.each(function(index, el) {
    var $el = $(el);
    templates[$el.data('name')] = _.template($el.html());
});

events属性

events属性用于钦点视图的事件及其相应的管理函数。

复制代码 代码如下:

var Document = Backbone.View.extend({
  events: {
    "click .icon":          "open",
    "click .button.edit":   "openEditDialog",
    "click .button.delete": "destroy"
  }
});

位置代码中三个钦命了两个CSS选择器的单击事件,及其相应的多少个管理函数。

listento方法

listento方法用于为一定事件钦命回调函数。

复制代码 代码如下:

var Document = Backbone.View.extend({
  initialize: function() {
    this.listenTo(this.model, "change", this.render);
  }
});

下边代码为model的change事件,内定了回调函数为render。

remove方法

remove方法用于移除三个视图。

复制代码 代码如下:

updateView: function() {
  view.remove();
  view.render();
};

子视图(subview)

在父视图中能够调用子视图。下边就是一种写法。

复制代码 代码如下:

render : function (){
    this.$el.html(this.template());
    this.child = new Child();
    this.child.appendTo($.('.container-placeholder').render();
}

Backbone.Router

Router是Backbone提供的路由对象,用来将客商须要的网站与后端的管理函数一一对应。

率先,新定义三个Router类。

复制代码 代码如下:

Router = Backbone.Router.extend({
    routes: {
    }
});

routes属性

Backbone.Router对象中,最珍视的正是routes属性。它用来设置路线的拍卖方法。

routes属性是二个目的,它的各样成员就表示壹个路子管理法则,键名字为路线准则,键值为管理措施。

一经键名称叫空字符串,就表示根路线。

复制代码 代码如下:

routes: {
        '': 'phonesIndex',
},
phonesIndex: function () {
        new PhonesIndexView({ el: 'section#main' });
}

星号代表专擅路线,能够安装路线参数,捕获具体的路线值。

复制代码 代码如下:

var AppRouter = Backbone.Router.extend({
    routes: {
        "*actions": "defaultRoute"
    }
});
var app_router = new AppRouter;
app_router.on('route:defaultRoute', function(actions) {
    console.log(actions);
})

地点代码中,根路线前面包车型大巴参数,都会被捕获,传入回调函数。

路径法则的写法。

复制代码 代码如下:

var myrouter = Backbone.Router.extend({
  routes: {
    "help":                 "help",   
    "search/:query":        "search"
  },
  help: function() {
    ...
  },
  search: function(query) {
    ...
  }
});
routes: {
  "help/:page":         "help",
  "download/*path":     "download",
  "folder/:name":       "openFolder",
  "folder/:name-:mode": "openFolder"
}
router.on("route:help", function(page) {
  ...
});

Backbone.history

设置了router现在,即可运维应用程序。Backbone.history对象用来监察和控制url的扭转。

复制代码 代码如下:

App = new Router();
$(document).ready(function () {
    Backbone.history.start({ pushState: true });
});

张开pushState方法。倘使应用程序不在根目录,就要求内定根目录。

复制代码 代码如下:

Backbone.history.start({pushState: true, root: "/public/search/"})
Backbone.Model

Model代表单个的靶子实体。

复制代码 代码如下:

var User = Backbone.Model.extend({
        defaults: {
            name: '',
            email: ''
        }
});
var user = new User();

地点代码使用extend方法,生成了三个User类,它代表model的模板。然后,使用new命令,生成三个Model的实例。defaults属性用来安装暗中同意属性,上边代码表示user对象私下认可有name和email多个属性,它们的值都等于空字符串。

变迁实例时,能够提供各种属性的具体值。

复制代码 代码如下:

var user = new User ({
    id: 1,
    name: 'name',
    email: '[email protected]'
});

下面代码在变化实例时,提供了逐一属性的具体值。

idAttribute属性

Model实例必需有多个属性,作为有别于别的实例的主键。那性情情的名称,由idAttribute属性设定,一般是设为id。

复制代码 代码如下:

var Music = Backbone.Model.extend({
    idAttribute: 'id'
});

get方法

get方法用于重临Model实例的某些属性的值。

复制代码 代码如下:

var user = new User({ name: "name", age: 24});
var age = user.get("age"); // 24
var name = user.get("name"); // "name"

set方法

set方法用于安装Model实例的某部属性的值。

复制代码 代码如下:

var User = Backbone.Model.extend({
    buy: function(newCarsName){
        this.set({car: newCarsName });
    }
});
var user = new User({name: 'BMW',model:'i8',type:'car'});
user.buy('Porsche');
var car = user.get("car"); // ‘Porsche'

on方法

on方法用于监听指标的变迁。

复制代码 代码如下:

var user = new User({name: 'BMW',model:'i8'});
user.on("change:name", function(model){
    var name = model.get("name"); // "Porsche"
    console.log("Changed my car's name to " + name);
});
user.set({name: 'Porsche'});
// Changed my car's name to Porsche

下面代码中的on方法用于监听事件,“change:name”表示name属性爆发变化。

urlroot属性

该属性用于钦点服务器端对model举行操作的路线。

复制代码 代码如下:

var User = Backbone.Model.extend({
    urlRoot: '/user'
});

地点代码钦命,服务器对应该Model的路线为/user。

fetch事件

fetch事件用于从服务器抽出Model。

复制代码 代码如下:

var user = new User ({id: 1});
user.fetch({
    success: function (user){
        console.log(user.toJSON());
    }
})

上边代码中,user实例含有id属性(值为1),fetch方法运用HTTP动词GET,向网站“/user/1”发出乞请,从服务器抽取该实例。

save方法

save方法用于文告服务器新建或更新Model。

一经二个Model实例不分包id属性,则save方法将应用POST方法新建该实例。

复制代码 代码如下:

var User = Backbone.Model.extend({
    urlRoot: '/user'
});
var user = new User ();
var userDetails = {
    name: 'name',
    email: '[email protected]'
};
user.save(userDetails, {
    success: function (user) {
        console.log(user.toJSON());
    }
})

地点代码先在类中钦定Model对应的网站是/user,然后新建贰个实例,最终调用save方法。它有八个参数,第八个是实例对象的切切实实性质,第4个参数是二个回调函数对象,设定success事件(保存成功)的回调函数。具体来讲,save方法会向/user发出一个POST诉求,并将{name: ‘name', email: ‘[email protected]'}作为数据提供。

假设二个Model实例含有id属性,则save方法将应用PUT方法立异该实例。

复制代码 代码如下:

var user = new User ({
    id: 1,
    name: '张三',
    email: '[email protected]'
});
user.save({name: '李四'}, {
    success: function (model) {
        console.log(user.toJSON());
    }
});

下边代码中,对象实例含有id属性(值为1),save将应用PUT方法向网站“/user/1”发出须要,进而创新该实例。

destroy方法

destroy方法用于在服务器上删除该实例。

复制代码 代码如下:

var user = new User ({
    id: 1,
    name: 'name',
    email: '[email protected]'
});
user.destroy({
    success: function () {
       console.log('Destroyed');
    }
});

地点代码的destroy方法,将运用HTTP动词DELETE,向网站“/user/1”发出央浼,删除相应的Model实例。

Backbone.Collection

Collection是同等类Model的聚合,譬喻Model是动物,Collection就是动物园;Model是单个的人,Collection就是一家合营社。

复制代码 代码如下:

var Song = Backbone.Model.extend({});
var Album = Backbone.Collection.extend({
    model: Song
});

地点代码中,Song是Model,Album是Collection,並且Album有贰个model属性等于Song,由此注明Album是Song的集纳。

add方法,remove方法

Model的实例能够间接选举择入Collection的实例,也得以用add方法增添。

复制代码 代码如下:

var song1 = new Song({ id: 1 ,name: "歌名1", artist: "张三" });
var song2 = new Music ({id: 2,name: "歌名2", artist: "李四" });
var myAlbum = new Album([song1, song2]);
var song3 = new Music({ id: 3, name: "歌名3",artist:"赵五" });
myAlbum.add(song3);

remove方法用于从Collection实例中移除一个Model实例。

复制代码 代码如下:

myAlbum.remove(1);

地点代码阐明,remove方法的参数是model实例的id属性。

get方法,set方法

get方法用于从Collection中获得钦命id的Model实例。

复制代码 代码如下:

myAlbum.get(2))

fetch方法

fetch方法用于从服务器抽取Collection数据。

复制代码 代码如下:

var songs = new Backbone.Collection;
songs.url = '/songs';
songs.fetch();

Backbone.events

复制代码 代码如下:

var obj = {};
_.extend(obj, Backbone.Events);
obj.on("show-message", function(msg) {
    $('#display').text(msg);
});
obj.trigger("show-message", "Hello World");

(……MVC介绍。)

Javascript有mvc框架?

你应有应对
MVC格局应该在程序员的心田,那样随时可用
而不应该仅存在于采取外人的框架上,那样未有框架就无法用。  

(1)Model

javascript什mvc框架可利用在IE6上?

很意外什么叫javascript的mvc,一知半解了,百度了须臾间,英特网推荐用Angular.js的可比多,那二个以前听过是Google写的,各市点应当都有有限支撑。。  

MVC框架Backbone.js详解,mvcbackbone.js 随着JavaScript程序变得进一步复杂,往往必要叁个团协会见作开荒,那时期码的模块化和团体标准就...

Model表示数据层,也便是前后相继要求的数据源,常常使用JSON格式表示。

(2)View

View代表表现层,相当于客户分界面,对于网页来讲,就是顾客阅览的网页HTML代码。

(3)Controller

Controller代表调节层,用来对原有数据(Model)进行加工,传送到View。

由于网页编程分裂于顾客端编制程序,在MVC的基本功上,JavaScript社区发出了种种变体框架MVP(Model-View-Presenter)、MVVM(Model-View-ViewModel)等等,有人就把具有这一类框架的各类情势统称为MV*。

框架的长处在于合理协会代码、便于团队合营和前程的保证,劣点在于有一定的就学开销,且范围你只可以选取它的写法。

Backbone的加载

复制代码 代码如下:

<script src="/javascripts/lib/jquery.js"></script>
<script src="/javascripts/lib/underscore.js"></script>
<script src="/javascripts/lib/backbone.js"></script>
<script src="/javascripts/jst.js"></script>
<script src="/javascripts/router.js"></script>
<script src="/javascripts/init.js"></script>

Backbone.View

着力用法

Backbone.View方法用于定义视图类。

复制代码 代码如下:

var AppView = Backbone.View.extend({
  render: function(){
    $('main').append('<h1>一级标题</h1>');
  }
});

地方代码通过Backbone.View的extend方法,定义了一个视图类AppView。该类内部有二个render方法,用于将视图放置在网页上。

应用的时候,需求先新建视图类的实例,然后通超过实际例,调用render方法,进而让视图在网页上出示。

复制代码 代码如下:

var appView = new AppView();
appView.render();

上边代码新建视图类AppView的实例appView,然后调用appView.render,网页上就能够来得钦赐的内容。

新建视图实例时,平时要求钦定Model。

复制代码 代码如下:

var document = new Document({
  model: doc
});

initialize方法

视图仍是能够定义initialize方法,生成实例的时候,会自动调用该方式对实例开头化。

复制代码 代码如下:

var AppView = Backbone.View.extend({
  initialize: function(){
    this.render();
  },
  render: function(){
    $('main').append('<h1>拔尖标题</h1>');
  }
});
var appView = new AppView();

上边代码定义了initialize方法之后,就节约了变动实例后,手动调用appView.render()的步子。

el属性,$el属性

而外直接在render方法中,钦点“视图”所绑定的网页成分,还足以用视图的el属性内定网页元素。

复制代码 代码如下:

var AppView = Backbone.View.extend({
  el: $('main'),
  render: function(){
    this.$el.append('<h1>一级标题</h1>');
  }
});

地点的代码与render方法间接绑定网页成分,效果一模二样。下面代码中,除了el属性,照旧$el属性,前边三个代表内定的DOM成分,后面一个则象征该DOM成分对应的jQuery对象。

tagName属性,className属性

只要不钦赐el属性,也得以经过tagName属性和className属性钦点。

复制代码 代码如下:

var Document = Backbone.View.extend({
  tagName: "li",
  className: "document",
  render: function() {
   // ...
  }
});

template方法

视图的template属性用来内定网页模板。

复制代码 代码如下:

var AppView = Backbone.View.extend({
      template: _.template("<h3>Hello <%= who %><h3>"),
});

上边代码中,underscore函数库的template函数,接受多个模板字符串作为参数,再次来到对应的模版函数。有了这些模板函数,只要提供具体的值,就能够生成网页代码。

复制代码 代码如下:

var AppView = Backbone.View.extend({
      el: $('#container'),
      template: _.template("<h3>Hello <%= who %><h3>"),
      initialize: function(){
        this.render();
      },
      render: function(){
        this.$el.html(this.template({who: 'world!'}));
      }
});

地点代码的render就调用了template方法,进而生成具体的网页代码。

实质上应用中,一般将模板放在script标签中,为了防御浏览器遵照JavaScript代码深入分析,type属性设为text/template。

复制代码 代码如下:

<script type="text/template" data-name="templateName">
    <!-- template contents goes here -->
</script>

可以运用上面的代码编写翻译模板。

复制代码 代码如下:

window.templates = {};
var $sources = $('script[type="text/template"]');
$sources.each(function(index, el) {
    var $el = $(el);
    templates[$el.data('name')] = _.template($el.html());
});

events属性

events属性用于钦赐视图的风云及其对应的管理函数。

复制代码 代码如下:

var Document = Backbone.View.extend({
  events: {
    "click .icon":          "open",
    "click .button.edit":   "openEditDialog",
    "click .button.delete": "destroy"
  }
});

上面代码中三个点名了三个CSS选拔器的单击事件,及其对应的七个管理函数。

listento方法

listento方法用于为一定事件钦命回调函数。

复制代码 代码如下:

var Document = Backbone.View.extend({
  initialize: function() {
    this.listenTo(this.model, "change", this.render);
  }
});

地点代码为model的change事件,钦命了回调函数为render。

remove方法

remove方法用于移除四个视图。

复制代码 代码如下:

updateView: function() {
  view.remove();
  view.render();
};

子视图(subview)

在父视图中能够调用子视图。下边就是一种写法。

复制代码 代码如下:

render : function (){
    this.$el.html(this.template());
    this.child = new Child();
    this.child.appendTo($.('.container-placeholder').render();
}

Backbone.Router

Router是Backbone提供的路由对象,用来将客商伏乞的网站与后端的管理函数一一对应。

第一,新定义一个Router类。

复制代码 代码如下:

Router = Backbone.Router.extend({
    routes: {
    }
});

routes属性

Backbone.Router对象中,最注重的正是routes属性。它用来安装路径的拍卖办法。

routes属性是多少个对象,它的各类成员就象征一个门道处理法则,键名称为路线法则,键值为拍卖措施。

若果键名称为空字符串,就象征根路线。

复制代码 代码如下:

routes: {
        '': 'phonesIndex',
},
phonesIndex: function () {
        new PhonesIndexView({ el: 'section#main' });
}

星号代表私行路线,能够安装路线参数,捕获具体的路线值。

复制代码 代码如下:

var AppRouter = Backbone.Router.extend({
    routes: {
        "*actions": "defaultRoute"
    }
});
var app_router = new AppRouter;
app_router.on('route:defaultRoute', function(actions) {
    console.log(actions);
})

地点代码中,根路线前边的参数,都会被抓走,传入回调函数。

路径法则的写法。

复制代码 代码如下:

var myrouter = Backbone.Router.extend({
  routes: {
    "help":                 "help",   
    "search/:query":        "search"
  },
  help: function() {
    ...
  },
  search: function(query) {
    ...
  }
});
routes: {
  "help/:page":         "help",
  "download/*path":     "download",
  "folder/:name":       "openFolder",
  "folder/:name-:mode": "openFolder"
}
router.on("route:help", function(page) {
  ...
});

Backbone.history

安装了router现在,就能够运营应用程序。Backbone.history对象用来监察和控制url的生成。

复制代码 代码如下:

App = new Router();
$(document).ready(function () {
    Backbone.history.start({ pushState: true });
});

张开pushState方法。假如应用程序不在根目录,就须要指定根目录。

复制代码 代码如下:

Backbone.history.start({pushState: true, root: "/public/search/"})
Backbone.Model

Model代表单个的靶子实体。

复制代码 代码如下:

var User = Backbone.Model.extend({
        defaults: {
            name: '',
            email: ''
        }
});
var user = new User();

地点代码使用extend方法,生成了叁个User类,它代表model的模板。然后,使用new命令,生成二个Model的实例。defaults属性用来安装暗中认可属性,下面代码表示user对象暗许有name和email两特本性,它们的值都等于空字符串。

变迁实例时,能够提供各种属性的具体值。

复制代码 代码如下:

var user = new User ({
    id: 1,
    name: 'name',
    email: 'name@email.com'
});

上面代码在改动实例时,提供了逐一属性的具体值。

idAttribute属性

Model实例必需有六本质量,作为有别于别的实例的主键。那么些特性的名号,由idAttribute属性设定,一般是设为id。

复制代码 代码如下:

var Music = Backbone.Model.extend({
    idAttribute: 'id'
});

get方法

get方法用于再次来到Model实例的有些属性的值。

复制代码 代码如下:

var user = new User({ name: "name", age: 24});
var age = user.get("age"); // 24
var name = user.get("name"); // "name"

set方法

set方法用于安装Model实例的某部属性的值。

复制代码 代码如下:

var User = Backbone.Model.extend({
    buy: function(newCarsName){
        this.set({car: newCarsName });
    }
});
var user = new User({name: 'BMW',model:'i8',type:'car'});
user.buy('Porsche');
var car = user.get("car"); // ‘Porsche'

on方法

on方法用于监听指标的转移。

复制代码 代码如下:

var user = new User({name: 'BMW',model:'i8'});
user.on("change:name", function(model){
    var name = model.get("name"); // "Porsche"
    console.log("Changed my car's name to " + name);
});
user.set({name: 'Porsche'});
// Changed my car's name to Porsche

上边代码中的on方法用于监听事件,“change:name”表示name属性发生变化。

urlroot属性

该属性用于内定服务器端对model实行操作的路线。

复制代码 代码如下:

var User = Backbone.Model.extend({
    urlRoot: '/user'
});

上边代码钦赐,服务器对相应Model的路线为/user。

fetch事件

fetch事件用于从服务器抽取Model。

复制代码 代码如下:

var user = new User ({id: 1});
user.fetch({
    success: function (user){
        console.log(user.toJSON());
    }
})

上边代码中,user实例含有id属性(值为1),fetch方法运用HTTP动词GET,向网站“/user/1”发出诉求,从服务器收取该实例。

save方法

save方法用于文告服务器新建或更新Model。

若果一个Model实例不分包id属性,则save方法将利用POST方法新建该实例。

复制代码 代码如下:

var User = Backbone.Model.extend({
    urlRoot: '/user'
});
var user = new User ();
var userDetails = {
    name: 'name',
    email: 'name@email.com'
};
user.save(userDetails, {
    success: function (user) {
        console.log(user.toJSON());
    }
})

地点代码先在类中钦定Model对应的网站是/user,然后新建四个实例,最后调用save方法。它有多少个参数,第2个是实例对象的具体性质,第贰个参数是叁个回调函数对象,设定success事件(保存成功)的回调函数。具体来讲,save方法会向/user发出多个POST央求,并将{name: ‘name', email: ‘name@email.com'}作为数据提供。

固然贰个Model实例含有id属性,则save方法将应用PUT方法立异该实例。

复制代码 代码如下:

var user = new User ({
    id: 1,
    name: '张三',
    email: 'name@email.com'
});
user.save({name: '李四'}, {
    success: function (model) {
        console.log(user.toJSON());
    }
});

地点代码中,对象实例含有id属性(值为1),save将应用PUT方法向网站“/user/1”发出诉求,从而革新该实例。

destroy方法

destroy方法用于在服务器上删除该实例。

复制代码 代码如下:

var user = new User ({
    id: 1,
    name: 'name',
    email: 'name@email.com'
});
user.destroy({
    success: function () {
       console.log('Destroyed');
    }
});

地点代码的destroy方法,将运用HTTP动词DELETE,向网站“/user/1”发出哀告,删除相应的Model实例。

Backbone.Collection

Collection是同一类Model的成团,比方Model是动物,Collection正是动物园;Model是单个的人,Collection正是一家合营社。

复制代码 代码如下:

var Song = Backbone.Model.extend({});
var Album = Backbone.Collection.extend({
    model: Song
});

地点代码中,Song是Model,Album是Collection,何况Album有贰个model属性等于Song,由此表明Album是Song的集合。

add方法,remove方法

Model的实例可以一贯放入Collection的实例,也能够用add方法增添。

复制代码 代码如下:

var song1 = new Song({ id: 1 ,name: "歌名1", artist: "张三" });
var song2 = new Music ({id: 2,name: "歌名2", artist: "李四" });
var myAlbum = new Album([song1, song2]);
var song3 = new Music({ id: 3, name: "歌名3",artist:"赵五" });
myAlbum.add(song3);

remove方法用于从Collection实例中移除三个Model实例。

复制代码 代码如下:

myAlbum.remove(1);

地点代码注解,remove方法的参数是model实例的id属性。

get方法,set方法

get方法用于从Collection中获得钦赐id的Model实例。

复制代码 代码如下:

myAlbum.get(2))

fetch方法

fetch方法用于从服务器收取Collection数据。

复制代码 代码如下:

var songs = new Backbone.Collection;
songs.url = '/songs';
songs.fetch();

Backbone.events

复制代码 代码如下:

var obj = {};
_.extend(obj, Backbone.Events);
obj.on("show-message", function(msg) {
    $('#display').text(msg);
});
obj.trigger("show-message", "Hello World");

你只怕感兴趣的稿子:

  • Backbone.js中的会集详解
  • Backbone.js的片段行使本领
  • 轻量级javascript 框架Backbone使用指南
  • Backbone.js的Hello World程序实例
  • backbone简介_引力节点Java高校整理

本文由小鱼儿玄机二站发布于操作系统,转载请注明出处:Javascript MVC框架Backbone.js详解

关键词: