网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 backbone.js学习实例
内容
    着手开始学习
    什么是backbone.js?
    美公的理解是 一种js的mvc的框架,分为Model(模型),View(视图)和Collection(集合),如果有mvc分层开发经验的话,会容易理解。
    为什么学习这个?
    因为用他可以在的单个页面完成多个应用模块,给用户的感觉是不用刷新页面,适合webapp开发
    $(function(){
    var testModel = Backbone.Model.extend({
    defaults:{
    id:"1",
    name:'meigong',
    age:'22'
    }
    });
    var Collection = Backbone.Collection.extend({
    model:testModel
    });
    var ItemView = Backbone.View.extend({
    tagName:'tr',
    template: _.template($('#tpl-item').html()),
    initialize: function(){
    this.model.bind('remove', this.unrender,this);
    this.model.bind('change', this.render,this);
    },
    events: {
    'click a.edit':'editItem',
    'click a.del':'delItem',
    "blur input,select" : "saveItem"
    },
    editItem:function(){
    //获取所有的input
    var input = $(this.el).find('input');
    input.each(function(k,v){
    $(v).removeAttr('disabled');
    });
    },
    delItem:function(){
    //从集合中删除
    app.collection.remove(this.model);
    },
    saveItem:function(){
    alert(2);
    },
    unrender:function(){
    $(this.el).remove();
    },
    render: function() {
    $(this.el).html(this.template(this.model.toJSON()));
    return this;
    }
    });
    var View = Backbone.View.extend({
    el:$('#test'),
    template: _.template($('#tpl-student').html()),
    initialize:function () {
    //this.model.bind("change", this.render, this);
    this.render();
    this.collection = new Collection();
    this.collection.bind('add', this.appendItem,this);
    this.id= 0;
    },
    events: {
    'click #btn':'addItem'
    },
    addItem:function(){
    this.id ++;
    this.testmodel = new testModel();
    this.testmodel.set({
    id:this.id
    });
    //添加到集合中
    this.collection.add(this.testmodel);
    },
    appendItem:function(){
    var itemView = new ItemView({model:this.testmodel});
    $(this.el).append(itemView.render().el);
    },
    render: function(eventName) {
    $(this.el).html(this.template());
    }
    });
    var app = new View();
    });
    开始说明:本例是美公笔记草稿,本地运行没问题,如拷贝代码会缺少文件
    修改的地方
    1.把backone-min.js中的部分修改为create:”POST”,update:”POST”,”delete”:”DELETE”,read:”GET”
    2.服务器端接受 post过来的json数据 $data = json_decode$GLOBALS['HTTP_RAW_POST_DATA']);
    用到的模板
    主文件代码
    $(function(){
    //实例化 index列表
    //index列表的model
    var index_Model = Backbone.Model.extend({
    ", //请求的地址
    });
    //model的集合
    var index_Collection = Backbone.Collection.extend({
    model: index_Model, //集合包含的model层
    url: './get.php' //请求的地址
    });
    //对应的每个元素的view
    var index_list_View = Backbone.View.extend({
    template: _.template($('#tpl-item').html()),
    initialize:function () {
    this.model.bind("change", this.render, this); //在model 执行set,add,destroy时会触发
    },
    events:{ //绑定事件
    'click .bannerImg':'addNum',
    'click .bannerInfo':'comment'
    },
    addNum:function(){
    //单击图片 显示的名字会改变
    this.model.set({ //会触发change事件
    'name':'超姐你好',
    });
    this.model.save(null,{ //发起一个post请求
    })
    },
    comment:function(){
    var id = this.model.get('id');
    app.navigate("comment/"+id, true); //hash导航url
    },
    render: function() {
    $(this.el).html(this.template(this.model.toJSON()));
    return this;
    }
    });
    //list View 是 index_list_View的集合
    var index_item_View = Backbone.View.extend({
    initialize: function() {
    this.model.bind('reset', this.render, this); //这里的model是个集合 传入的是index_Collection
    var self = this;
    this.model.bind("add", function (item) { // 在 index_Collection 执行add操作会触发 add 或者 发起create请求时也会触发
    $(self.el).append(new index_list_View({model:item}).render().el);
    });
    },
    render: function(eventName) { //渲染
    //这里的model是个集合
    _.each(this.model.models,function(item) {
    $(this.el).append(new index_list_View({model: item}).render().el);
    },
    this);
    return this;
    }
    });
    //发表评论功能
    var comment_add_View = Backbone.View.extend({
    template: _.template($('#tpl-comment').html()),
    initialize:function () {
    this.render();
    },
    events:{
    'click .btn':'addCom',
    },
    addCom:function(){
    var title = $("input[name='title']").val();
    var data = {
    title:title
    }
    //这里必须写app啊
    app.comment_collection.create(data,{
    ,
    success:function(){
    }
    });
    },
    render: function() {
    $(this.el).html(this.template()); //没有model时 直接写this.template() 。有model要解析model成字符串 用到的是this.model.toJSON()
    return this;
    }
    });
    /***显示评论列表功能 代码解释同上**/
    var comment_Model = Backbone.Model.extend({
    ",
    defaults:{
    title:'',
    }
    });
    var comment_Collection = Backbone.Collection.extend({
    model: comment_Model,
    url: 'http://www.biuman.com/test/before/test'
    });
    var comment_list_View = Backbone.View.extend({
    template: _.template($('#tpl-comment-list').html()),
    initialize:function () {
    this.model.bind("change", this.render, this);
    },
    events:{
    },
    render: function() {
    $(this.el).html(this.template(this.model.toJSON()));
    return this;
    }
    });
    var comment_item_View = Backbone.View.extend({
    initialize: function() {
    this.model.bind('reset', this.render, this); //这里的model是个集合
    var self = this;
    this.model.bind("add", function (item) {
    $(self.el).append(new comment_list_View({model:item}).render().el);
    });
    },
    render: function(eventName) {
    //这里的model是个集合
    _.each(this.model.models,function(item) {
    $(this.el).append(new comment_list_View({model: item}).render().el);
    },
    this);
    return this;
    }
    });
    // Router
    var AppRouter = Backbone.Router.extend({
    routes: {
    "": "list",
    "comment/:id":"comment"
    },
    initialize: function() {
    },
    list: function() {
    if(typeof this.index_collection == 'undefined'){
    this.index_collection = new index_Collection();
    this.index_item_view = new index_item_View({
    model: this.index_collection //传入的index_collection集合
    });
    var self = this;
    this.index_collection.fetch({
    success: function(collection, resp) {
    //console.dir(collection.models);
    }
    }); //fetch先绑定 rest事件
    }else{
    this.index_item_view = new index_item_View({
    model: this.index_collection
    });
    }
    $('#content').html(this.index_item_view.render().el);
    },
    comment:function(id){
    this.comment_collection = new comment_Collection();
    this.comment_item_view = new comment_item_View({
    model: this.comment_collection //传入的集合
    });
    var self = this;
    this.comment_collection.fetch({
    ,
    success: function(collection, resp) {
    $('#content').append(new comment_add_View().render().el)
    }
    }); //fetch先绑定 rest事件
    $('#content').html(this.comment_item_view.render().el);
    }
    });
    var app = new AppRouter();
    Backbone.history.start();
    });
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/17 6:55:28