6、backbone中的view实例

设计并实现一个简单的编程语言 设计一个支持函数递归调用的程序语言,学习编译器原理。 阅读详情

Backbone的view是用来显示你的model中的数据到页面的,同时它也可用来监听DOM上的事件然后做出响应。
先要给出一个页面的大体代码,下面的所有试验代码都要放到这里面:

<!DOCTYPE html>
<html>
<head>
    <title>the5fire-backbone-view</title>
</head>
<body>
    <div id="search_container"></div>
    
    <script type="text/template" id="search_template">
        <label><%= search_label %></label>
        <input type="text" id="search_input" />
        <input type="button" id="search_button" value="Search" />
    </script>
</body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script src="http://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.4/underscore-min.js"></script>
<script src="http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min.js"></script>
<script>
(function ($) {
           //此处添加下面的试验代码  
})(jQuery);
</script>
</html>


1、一个简单的view

SearchView = Backbone.View.extend({

    initialize: function(){

        alert('init a SearchView');

    }

});

var searchView = new SearchView();

是不是觉得很没有技术含量,所有的模块定义都一样。

2、 el属性

这个属性用来引用DOM中的一些元素,每一个Backbone的view都会有这么个属性,

如果没有显示声明,Backbone会默认的构造一个,表示一个空的div元素

SearchView = Backbone.View.extend({

    initialize: function(){

        alert('init a SearchView');

    }

});

var searchView = new SearchView({el: $("#search_container")});

接着来看这个el的应用,首先注意标签中的这个标签,这是我们定义的一个模板。

SearchView = Backbone.View.extend({

    initialize: function(){

        //this.render();

    },

    render: function() {

        //使用underscore这个库,来编译模板

        var template = _.template($("#search_template").html(),{});

        //加载模板到对应的el属性中

        this.el.html(template);

    }

});

var searchView = new SearchView({el: $("#search_container")});

searchView.render();  //这个reander的方法可以放到view的构造函数中

运行页面之后,会发现script模板中的html代码已经添加到了我们定义的div中。

3、再来看对DOM中元素事件的绑定,很简单

SearchView = Backbone.View.extend({

    initialize: function(){

        this.render();

    },

    render: function() {

        //使用underscore这个库,来编译模板

        var template = _.template($("#search_template").html(),{});

        //加载模板到对应的el属性中

        this.el.html(template);

    },

    events:{  //就是在这里绑定的

        'click input[type=button]' : 'doSearch'  //定义类型为button的input标签的点击事件,触发函数doSearch

    },

    doSearch: function(event){

        alert("search for " + $("#search_input").val());

    }

});

var searchView = new SearchView({el: $("#search_container")});

自己运行下,是不是很简答,比写$(“input[type=button]“).bind(‘click’,function(){})好看多了吧。

4、view中的模板

如果你用过django模板的话,你应该会想到前面提到的模板和django模板是不是有同样的功能,既然是模板,那就应该能传入数据。

没错了,这个和django的使用一样,可以在模板中定义变量,然后通过字典的方式传递进去

注意script模板的变化

SearchView = Backbone.View.extend({

    initialize: function(){

        this.render();

    },

    render: function() {

        //使用underscore这个库,来编译模板

        var template = _.template($("#search_template").html(),{search_label: "the5fire search"});

        //加载模板到对应的el属性中

        this.el.html(template);

    },

    events:{  //就是在这里绑定的

        'click input[type=button]' : 'doSearch'  //定义类型为button的input标签的点击事件,触发函数doSearch

    },

    doSearch: function(event){

        alert("search for " + $("#search_input").val());

    }

});

var searchView = new SearchView({el: $("#search_container")});


再次运行,有木有觉得这个东西对dom的操作还是很好玩的。

别激动,再来稍微扩展一下

对于实际应用来说,页面数据的变化需要同步到服务器端,最理想的方法,只是回传变化的数据就ok,然后修改页面上对应的数据,而不是刷新页面。

SearchView = Backbone.View.extend({

    initialize: function(){

        this.render('the5fire');

    },

    render: function(search_label) {

        //使用underscore这个库,来编译模板

        var template = _.template($("#search_template").html(),{search_label: search_label});

        //加载模板到对应的el属性中

        this.el.html(template);

    },

    events:{  //就是在这里绑定的

        ​'click input[type=button]' : 'doChange' 

    },

    doChange: function(event){

        //通过model发送数据到服务器

        this.render('the5fire' + $("#search_input").val());

    }

});

var searchView = new SearchView({el: $("#search_container")});

这是一个比较牵强的例子,但是如果加上model的使用,效果就会好很多,通过view和model可以使得业务和数据真正的分离。

总之,view的主要应用就是绑定事件,处理业务,渲染页面。

本文链接: http://www.the5fire.net/6-backbone-view.html

用 C 语言开发一门编程语言 — 条件分支的设计与实现 目录 文章目录目录前文列表条件分支排序函数等于函数if 函数递归函数源代码 前文列表 《用 C 语言开发一门编程语言 — 交互式解析器》 《用 C 语言开发一门编程语言 — 跨平台的可移植性》 《用 C 语言开发一门编程语言 — 语法解析器》 《用 C 语言开发一门编程语言 — 抽象语法树》 《用 C 语言开发一门编程语言 — 异常处理》 《用 C 语言开发一门编程语言 — S-表达式》 《用 C... 阅读详情

相关推荐

用 C 语言开发一门编程语言 — 字符串的设计与实现

目录 文章目录目录前文列表字符串读取字符串注释文件加载函数命令行参数打印函数报错函数源代码 前文列表 《用 C 语言开发一门编程语言 — 交互式解析器》 《用 C 语言开发一门编程语言 — 跨平台的可移植性》 《用 C 语言开发一门编程语言 — 语法解析器》 《用 C 语言开发一门编程语言 — 抽象语法树》 《用 C 语言开发一门编程语言 — 异常处理》 《用 C 语言开发一门编程语言 — S-表...

烟云的计算 2251

backbone官方实例

backbone的官方代文档 包含js文件以及相应demo

用 C 语言开发一门编程语言 — 变量的设计与实现

目录 文章目录目录前文列表变量变量语法规则变量的读取和存储将变量加入 Lisp Value 体系变量的计算变量的定义异常处理源代码 前文列表 《用 C 语言开发一门编程语言 — 交互式解析器》 《用 C 语言开发一门编程语言 — 跨平台的可移植性》 《用 C 语言开发一门编程语言 — 语法解析器》 《用 C 语言开发一门编程语言 — 抽象语法树》 《用 C 语言开发一门编程语言 — 异常处理》 《...

烟云的计算 2402

backbone学习笔记:2 View的events和模板

这次整理学习View的events和模板相关的内容,事件处理和模板解析都是前端渲染必需的工作,backbone一般把这些内容放到View里面统一处理。 2.js var ListView = Backbone.View.extend({ el: $('.wrapper'), events: { 'click button...

weixin_34162401的博客 175

backboneview.events中绑定事件

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33709219的博客 399

Backbone入门基础 - Model和View基本用法

简单介绍Backbone的Model和View的基本用法以及两者间的关系,并提供用法实例

Joyce的前端日常 4360

Backbone.View

在前几节中我们介绍了Backbone基础知识,如果你还没有阅读过,那么我建议你从第一节开始学习——Backbone.js系列教程一:Backbone.js初探,尤其希望你能完全理解构造Backbone对象相 关知识,这对于学习今后的内容有很大帮助。在接下来的几个小节中,我们将深入Backbone,讨论Backbone views、models和collections。相信大家在阅读前文之后,已

zhuchunyan_aijia的博客 890

用C语言自定义编程语言的实现教程

编程语言是用于创建计算机程序和应用程序的工具,它是一套规则和符号的集合,允许开发者通过声明式和过程式指令来控制计算机的行为。在设计一个新的编程语言时,需要考虑它的目标用户、应用场景、性能要求、可读性、易用性、扩展性和安全性等因素。编程语言的设计直接关系到编译器或解释器的复杂度以及运行时的效率。在着手自定义编程语言的开发之前,我们首先需要对潜在用户群体的需求进行深入分析。确定编程语言的目标用户是谁,他们在使用过程中有哪些痛点和需求。

weixin_35671843的博客 1444

从 Python 到 Go:盘点那些最早用 C 语言实现的编程语言

从 1974 年贝尔实验室里那 1600 行 C 代码的 sed,到 2009 年 Ken Thompson 用 C 敲下 Go 编译器的第一行,再到今天仍在用 C 从头实现新语言的 Wren、Janet——C 语言像一条暗河,流淌在几乎所有编程语言的脚下。你用 Python 做数据分析、用 PHP 写网站、用 Ruby 做后端、用 Lua 写游戏插件、用 JavaScript 刷网页、用 Go 写微服务——这些语言的语法和哲学千差万别,但它们最早的"摇篮",都是同一种语言。C 已经 54 岁了。

qq_41424688的博客 229

Qesol编程语言设计与实现:基于C语言的自制语言实战教程

Qesol 是一门由 C 语言实现的实验性编程语言,专为教学与小型项目开发而设计。它的诞生源于对编程语言底层原理的深入理解需求,旨在帮助开发者掌握语言设计、语法解析、虚拟机实现等核心技术。Qesol 的语言风格融合了脚本语言的简洁与系统语言的高效,支持变量定义、控制结构、函数调用等基本语法,同时提供了与 C 语言的无缝交互能力。通过 Qesol,开发者可以直观理解编程语言从源码到执行的全过程,为编译原理、解释器开发等进阶学习打下坚实基础。

weixin_30789053的博客 303

用 C 语言开发一门编程语言 — 基于 Lambda 表达式的函数设计与实现

目录 文章目录目录前文列表函数Lambda 表达式函数设计函数的存储Lambda 函数父类环境可变的函数参数 前文列表 《用 C 语言开发一门编程语言 — 交互式解析器》 《用 C 语言开发一门编程语言 — 跨平台的可移植性》 《用 C 语言开发一门编程语言 — 语法解析器》 《用 C 语言开发一门编程语言 — 抽象语法树》 《用 C 语言开发一门编程语言 — 异常处理》 《用 C 语言开发一门编...

烟云的计算 2583

Nature编程语言全面解析:为什么这个纯C实现的系统语言值得关注?

在系统编程语言的世界里,C语言凭借其高效和接近硬件的特性长期占据重要地位。而**Nature编程语言**作为一个纯C实现的新兴系统语言,正逐渐引起开发者的关注。它不仅继承了C语言的高性能优势,还融入了现代编程语言的特性,为系统级编程带来了新的可能性。本文将从语言特性、架构设计、应用场景等方面,全面解析Nature编程语言的魅力所在。 ## 一、Nature编程语言的核心特性 ### 1.1 纯

gitblog_00053的博客 579

c 语言怎么实现可视化编程,自定义编程语言的实现

小刘是一名出色的软件工程师,能流畅的使用5种编程语言打印 hello world。一天他的准岳父(养老院院长)找到他,拜托他一件事:教养老院的老人们编程,不用太难,体验一把思想就行了院长,别说了,拔刀吧小刘内心是拒绝的,一些不可抗拒的原因,让他强忍住内心的翻滚,“嗯,没啥问题”。小刘神志有些恍惚,准备离开院长办公室。院长补充道:“对了小刘,老人们都不会英语,但ABCD还是认识的,这个你知道的吧,知...

weixin_35473679的博客 2019

c 编程语言 树,使用C编程语言实现AVL树

本文将介绍AVL树及其插入、删除操作,最后使用C编程语言实现基于平衡因子(balance factor)的AVL树。什么是AVL树?AVL树(AVL tree)是前苏联计算机科学家Adelson-Velsky和Landis发明的一种自平衡二叉查找树(self-balancing binary search tree)。它有两大属性,一个是继承自二叉查找树的查找属性(binary search pr...

weixin_35715235的博客 225

编程语言自举(Bootstrapping)实现教程探讨学习_从C到C++到C#到VB到Python_附示例代码

C++ 编译器(如 GCC、Clang)通常用 C++ 编写。以下是模拟 C++ 自举的示例。Python 的 PyPy 解释器是用 Python 的子集 RPython 编写的。C 语言是最早实现自举的语言之一。以下是模拟 C 编译器自举的示例。C# 编译器(Roslyn)是用 C# 编写的。希望这篇教程对你理解编程语言自举有所帮助!自举(Bootstrapping)是指。如何实现自举,并提供示例代码。

胡茬大叔的博客 731

编程语言专题《开发篇,C语言实现面向对象的方法》

对比C和C++,C语言的结构体的确有点类似C++类的概念,可使用结构体内嵌指针实现面向对象编程 总体来说,C语言是面向过程的,但是C语言写出的Linux系统是面向对象的。非面向对象的语言,其实也是可以使用面向对象的思路来编写程序的。只是说用面向对象的语言来实现面向对象编程会更简单一些,但是C语言的高效性是其他面向对象编程语言无法比拟的。当然使用C语言来实现面向对象的开发相对不容易理解,这就是为什...

物联网研究室BBC的博客 2662

为什么JOS操作系统是用C语言实现的,why not高级编程语言?

为什么JOS操作系统是用C语言实现的,why not高级编程语言?

weixin_45495051的博客 267

不同编程语言的魅力

Visual Basic是一种由微软公司开发的结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言。它源自于BASIC编程语言。C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。一般,“Perl”,有大写的P,是指语言本身,而“perl”,小写的p,是指程序运行的解释器。最重要的是,C#使得C++程序员可以高效的开发程序,而绝不损失C/C++原有的强大的功能。

关注我!带你一路 "狂飙" 到底! 1282
上一篇: 5、backbone中的Router实例
下一篇: 7、backbone实例todos分析(一)
the_fire
博客等级 码龄18年 662粉丝 257原创
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值