Javascript MVC ——Controller

mvc如何使用JavaScript在view和controller之间传递数据 在一般的BS项目开发中,我们经常需要在前台和后台之间传递数据,mvc架构中,也需要在view和controller之间传递数据,那么我们应该如何实现呢? 阅读详情

 

原文:http://javascriptmvc.com/docs.html#&who=jQuery.Controller

翻译: 刘贵学(liuguixue@gmail.com)

 

 

控制器是使用代理将事件处理组织起来。如果您的应用中有事件发生(用户点击或模型实例更新)应当由控制器处理并响应此事件。

控制器可使您的代码更明确,可复用性与架构性更强,这可自动与底层代码相隔离,要了解更多关于控制器理论及其相关特性,请关注Jupiter的博客。

基础示例

替换前:

 

替换后:

 

Tabs实例

使用Controller

控制器(Controller)可以帮您组织并构建jQuery插件。它可用于构建一些简单的微件,例如slider,也可将多个微件组成一些更大的。要理解如何使用控制器(Controller),您还需要了解一般的jQuery微件生命周期,以及如何映射到控制器的功能。

创建一个控制器类

 

这将创建一个叫做$.fn.my_widget的 jQuery辅助功能,可用于在html元素上建立一个新的控制器(Controller)实例。

在html元素上创建一个控制器实例

$('.thing').my_widget(options) // 调用new MyWidget(el, options)

它在每个 '.thing' 元素上调用了MyWidget(el, options)。当创建一个(类的)新实例时,将调用类的原型方法 setup与init,其中Controller的setup函数:

  •  设置this.element,并添加控制器的名称与元素的类名;
  •  将默认的对象参数设置给 this.options;
  •  在控制器的$.data中保留一个引用;
  •  绑定所有的事件处理函数

控制器响应事件

通常,Controller的事件处理是自动绑定的,Controller可有多种方法监听事件。

当事件发生时,this(当前Controller实例的引用)的回调函数会被调用,这样可以更方便的使用辅助函数,并将状态保存在控制器里。

微件的销毁

如果元素从页面上移除,jQuery.Controller.destroy函数会被调用,专用于存放处理卸载功能。当然,您也可以使用其他方法处理卸载方法:

 

Todos 例子

让我们看一个非常简单的例子,待办事列表与新建按钮,您的HTML应当如下:

 

给mousover添加一个样式,并新建待办事,您的Controller应当如下:

 

这样就创建一个Controller类,您还要在'#todos'层上通过新建一个Controller的实例,进而添加事件处理,有两种方法:

 

Controller 初始化

给您的widget的添加一个init函数是非常有用的,下面的例子,我们创建一个controller,然后将一个消息输出html元素:

 

删除Controllers

jQuery内部支持移除Controller. 所以要移除一个controller, 您只需要移除其元素:

 

请注意:如果您使用原始的DOM方法(innerHTML, removeChild),其控制器无法销毁。

如果您只想删除controller功能,调用此controller实例的destroy函数:

 

访问 Controllers

有时您需要获取一个controller的引用,有几种方法可以做到。请看下面的例子,我们假设有2个 className="special"的元素。

 

Controller函数的调用

一旦您有一个元素的引用,您就可以使用引用调用元素的所有函数,然而,Controller也有一些调用技巧:

 

 

 

利用ajax实现前台javascript同c#后台MVC下的controller层传递数据的方法 在之前的文章中介绍了有关c# web开发框架下的aspx.cs文件与javascript的数据交换,这个方法对于MVC框架下的程序来讲并不好用。下面这个方法可以实现在MVC框架中,前台cshtml 的javascript 同后台 Controllers层的数据交互。 javascript代码: function waterQualityMessageClick() { var valu 阅读详情

相关推荐

SAP Fiori Elements controller extension 的加载原理

在 manifest.json 的 extends 区域里,注册自己的扩展实现: "extends": { "extensions": { "sap.ui.controllerExtensions": { "sap.suite.ui.generic.template.ListReport.view.ListReport": { "controllerName"

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 657

java controller 继承_java – Spring RestController中的继承

我有一个Spring RestController,它处理API调用的第1版.package rest.v1;@RestController@RequestMapping("v1/someResource")public class Controller_V1 {@RequestMapping(value = "/{resourceName}", method = RequestMethod.GE...

weixin_29048775的博客 1568

电子设计实战:用MOS管手把手搭建D触发器电路(含时序分析避坑指南)

本文详细介绍了如何使用MOS管从零开始搭建D触发器电路,重点解析了建立时间和保持时间等关键时序参数对电路稳定性的影响。通过实测波形分析和避坑指南,帮助电子工程师掌握D触发器的实际搭建技巧与优化方法,提升数字电路设计的可靠性。

x1y2z的博客 1161

JS——MVC模式

架构模式之一:MVC(模型—视图—控制器) 它通过关注点分离鼓励改进应用程序组织。它强调将业务数据(Model)与用户界面(View)隔离,第三个组件(Controller)仍然管理逻辑和用户输入。 如果把MVC想成一个夹心饼干,那么Model和View就是夹心饼干外边的两片,而Controller则是中间的奶油。 1、前端的View是什么?个人理解是,与页面上元素直接相关的部分都属于Vie

spfLinux的博客 2847

CSP-J 复试考点

可以用来训练思维,对于学习时间短的同学,动态规划可以帮助你迅速进入编程状态,也有助于帮你发现题目背后可能隐藏的更简便的算法。动态规划、贪心都是和子问题相关的,动态规划的基本思想是将一个大的问题划分成子问题,接着分别求解,而且能够将一些重复的计算记忆化,大大提高效率。难度加大,会涉及到二分、动态规划之类的算法,容易遗漏考虑点,不易得全分,考试的时候要注意全面性。一般是压轴题,算法不明显,剪枝的搜索、动态规划、状压 DP、树形 DP 、树、图等。枚举算法是指,列举出所有可能的取值,从中找出最优解。

GuanHeTian的博客 2214

算法笔记(胡凡)学习笔记@Kaysen

本文旨在记录算法笔记学习过程中的收获和一些知识点,部分易错知识点只针对个人而言,CCF-CSP考试冲鸭!!! Chapter 2 C/C++快速入门(易错知识点) 2.1 基本数据类型 变量定义注意区分大小写。 一、整型 整型int,32bit(4Byte),取值范围是,绝对值在范围内的整数都可以定义成int。 长整型long long,64bit(8Byte),取值范围是,绝对值超过的整数就需要用long long存储。 ...

Kaysen_Zhao的博客 2898

JavaScriptMVC之Controller

Controller帮助创建合理的,可释放内存,快速执行jQuery配件。 它非常好的灵活性让它可以为一个传统和视图和控制器服务。 从这里我们可以得出,UI控件=视图+控制器。例如jquery UI:$("#test").dialog(); 这也意味着我们使用它来很容易创建像Tab,Grid和右键菜单等控件,并且很好组合,符合行业规则。 控制器让你的代码有确定性,复用性,组织性,且可以很方便...

hzylyl2402的专栏 376

从零开始:手把手教你用Verilog搭建一个可配置的Cache模块(以Vortex GPGPU为例)

本文详细介绍了如何使用Verilog从零开始搭建一个可配置的Cache模块,以Vortex GPGPU为例。内容涵盖Cache设计基础、模块接口与参数化设计、核心子模块实现、仲裁与一致性机制、功能验证与性能调优等关键环节,适合RTL设计初学者和希望深入理解Cache工作原理的工程师。通过实战指南,读者可以掌握硬件代码分析技巧,提升Cache模块的设计能力。

weixin_42552315的博客 441

SAP学习笔记 - 开发05 - Fiori UI5 开发环境搭建2 Fiori Tools插件安装,SEGW创建后台程序,注册服务和Gateway Client确认,从SAP抽数据显示到页面

本章继续学习Fiori UI5开发环境搭建,包括 VSCode 安装Fiori Tools插件,SEGW 创建后台程序,注册服务,Gateway Client确认服务,以及提到了OData官网,要查资料可以到这里查。然后还讲了在VSCode中创建的Project中如何通过创建的SEGW服务来抽取SAP的数据。

shi_ly的专栏 4054

OKCC呼叫中心部署实战指南:从零搭建高效外呼系统

本文提供OKCC呼叫中心系统的完整部署实战指南,从服务器选型、操作系统准备到详细安装步骤和性能优化,帮助企业从零搭建高效外呼系统。重点介绍FreeSWITCH核心组件的安装配置技巧,以及常见问题排查方法,助力企业提升客户服务效率。

weixin_29275257的博客 163

Linux系统安装部署Redis完整教程(图文详解)

最近需要在Linux服务器安装部署Redis,参考了网上很多的文章,比较零碎,所以我自己写了一篇完整的Redis安装部署文档,在部署Redis之前重装了我的华为服务器,就是为了给大家一步步阐述我的操作过程,配合图文进行讲解更加通俗易懂!

黄团团的个人博客 6693

RAG与NL2SQL双通道融合:企业智能问答Agent的架构设计与落地实践

在企业级AI应用中,自然语言处理与大型语言模型解决了人机交互的语义理解问题,而如何精准获取答案则依赖于底层的数据检索与查询能力。RAG(检索增强生成)技术通过向量化文档片段为问答系统提供知识库支撑,NL2SQL则能将自然语言转化为结构化查询,实现对业务数据库的实时取数。然而,真实业务场景往往同时涉及文本制度与结构化数据,单一技术难以覆盖。本文将两种技术融合进同一Agent体系,通过意图路由、多路召回、Schema Linking与动态元数据注入等原理,构建了知识库与数据库联动的双通道架构。该方案可广泛应用于

weixin_34384557的博客 643

Windows环境下Ollama的本地部署方案

本文主要介绍了Windows环境下Ollama的本地部署方案,希望对使用大语言模型的同学们有所帮助。 文章目录 1. 前言 2. Windows环境安装 3. API调用示例代码

herosunly的博客 11万+

Js上传图片以及Controller存储

JS <script> $(function () { var regtype = RegExp("image");//是否为图片 $("#pingzheng_file").on('change', function () { var file = this.files[0]; if (file =...

小香猪的乐园 286

汽车IVI中控开发入门及进阶(九):显示屏

显示屏Display panel和触控屏Touch panel,可以说随着汽车四化的进展,屏越来越多,越来越大,越来越高清,成为IVI中控、智能座舱系统的重要组成部分。比如如下一个电阻触摸屏。正文:显示屏主要功能就是显示,车载内容和信息的传递全靠显示屏,目前车载显示屏的种类可以分为:LCD液晶显示屏(TFT(薄膜晶体管)驱动的有源矩阵液晶显示,再细分IPS、TFT、SLCD,这几个子类)、LED显示屏(用 LED发光二极管作为背光光源)、OLED 显示屏。

码农17年的博客 2526

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

(转)Model-View-Controller (MVC) with JavaScript

为什么80%的码农都做不了架构师?>>> ...

weixin_34200628的博客 118

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

MVC中如何在controller的action中输出JS到页面上

MVC中如何在controller的action中输出JS到页面上 可以通过Http上下文对象(httpContext)就可以了,在Action中的HttpContext就是这个Action所指向的页面的上下文,所以向页面输出JS,可以这样: HttpContext.Response.Output.Write("<script>alert('呵呵!')</scrip...

dianyunfan6593的博客 350

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

html如何使用mvc中的model,javascript,controller_MVC里model是模型,一些通用的方法,应该是model还是controller?,javascript,contr...

MVC里model是模型,一些通用的方法,应该是model还是controller?MVC的概念看了一些,感觉理解还是没有很透彻,在实际应用中还是有一些不知道属于model还是controller?MVC里model是模型,如我有一些通用的方法(主要是操作DOM和获取)放在appUtil对象里,应该属于model还是controller?//方法:主要是获取数据,生成HTML元素,插入页面的方法/...

weixin_36239480的博客 360

javascript调用mvc Controller方法。

string clickUrl = Url.Action("ModelingResults","AgroModeling"); settings.Properties.ClientSideEvents.Click = string.Format("function(s, e) {{ document.location.href = '{0}'; }}", clickUrl);

yucancan4的博客 8133

asp.net mvc controller调用js

在controller中加入代码 ViewBag.js="<script>alert('弹出框');</script>"; 在视图中加入代码 @Html.Raw(ViewBag.js) 转载于:https://www.cnblogs.com/sydeveloper/p/3680582.html...

620

ASP.NET MVC controller 之间传JS值

在ASP.NET MVC中有东西叫TempData,它的类型是TempDataDictionary,它与ViewData以及ViewBag的不同之处在于 它的内部是使用session来保存信息的,可以理解为暂存的意思。虽然是通过session在保存信息,但它的生命周期是“一次网页的请求”。 利用这一点,我们可以用它在做MVC 中action之间的传值。以下是我传值的一点经验,高手请忽略,呵呵。...

weixin_30918415的博客 250

Backbone.Controller 开源项目常见问题解决方案

Backbone.Controller 开源项目常见问题解决方案 1. 项目基础介绍和主要编程语言 Backbone.Controller 是一个开源项目,旨在为使用 Backbone.js 的开发者提供一个用于管理 MVC(模型-视图-控制器)架构中控制器逻辑的工具。它通过扩展 Backbone 的 Router 和 History 功能,帮助开发者将控制逻辑分离,并支持声明式路由定义。本项目主...

gitblog_00855的博客 700

Node.js——浅谈Express的MVC(Model-View-Controller)模式使用

前言: 相信学过ThinkPHP5之类的后端框架的盆友,都或多或少对MVC有些了解,而Node.js虽然官网给定生成应用模板中并没有相应的Model、Controller文件目录,但是当Express结合Mongoose的时候,MVC模式无疑是开发的首选。 路由 首先,任何一个后端,路由都是最重要的,而Express的路由就起着连接Controller的作用。接下来我们用一个简单的后端接口来讲...

五柳 2801
上一篇: Javascript MVC —— Model
下一篇: Javascript MVC —— View
0x16
博客等级 码龄20年 79粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值