Tag: design patterns

什么是“泄漏”到全球范围?

不久之前,我提出了一个JavaScript设计模式(模块模式 – 见下文),我从John Resig的例子中得到了一个解决某人问题的一部分 ,我收到了以下评论: “……这种模式有点过于设计而不是那么好。 仍然渗透到全球范围。 而你不打开自己的异步装载机。 但它比ad-hoc编码更好!“ 所以… 如果“泄漏”到全局范围意味着“您的对象被附加到浏览器窗口(对象)”……那么所有内容都已经被追加(全局): 这“泄漏”到全球范围: window.jQuery …只需调用: window.jQuery并将其解析为函数(); 这“泄漏”到全球范围: function HelloWorld() { alert(‘Howdy’); } …只需致电: window.HelloWorld() ,你就会得到’你好’。 这“泄漏”到全球范围: var myVariable = 10; …只需致电: window.myVariable ,你就会得到10分 如果评论者是正确的,那么以上所有“泄漏”到全球范围。 所以,就个人而言,我没有看到一种不“泄漏”到全局范围内的方法,因为即使你的表单控件也存在(也是如此)。 因此,这是我的问题…… 什么是“泄漏”到全球范围? 为什么那么糟糕? 你怎么避免它? 当想要创建持久的自定义对象时,为什么模块模式(下面)不好? 设计模式让你封装复杂的逻辑, 封装突然变坏只是因为我们用JavaScript编写 ? 或者……这个评论者完全错了吗? 这是我上面提到的模块模式: var myNamespace = (function($) { var publicInstances = {}; // *********************** […]

如何在ASP.NET MVC中简化我的状态隔行扫描模式对话框

我需要在ASP.NET MVC项目中以渐进增强方式保持多对多modal dialog的状态。 在我的代码中,当javascript被禁用时,modal dialog将导航转到另一个页面并返回,但是当启用javascript时,对话框打开为jquery模式对话框,其确定。 我正在使用此方法从点击视图中选择操作。 下面的代码显示了一个主页面调用详细信息页面,有视图和控制器。 只有一个主控制器调用一个详细信息对话框但我有另一个视图/控制器,其中一个主控制器可以调用许多不同的详细信息对话框,有时一个对话框可以像主页一样运行并调用另一个嵌套的对话框。 一切都必须保持呼叫之间的状态。 问题是它非常复杂,有很多代码可以保持状态和管理对话框,我需要在任何地方重复相同的javascript和控制器代码,我希望有一些方法来简化它。 在视图方面需要将脚本通用转移到单独的.js文件并继续查看最少的javascript。 在控制器方面,我搜索了一些通用的方法来做它像filter或自定义绑定器,但无法找到。 CONTROLLER //###################################################################### using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using HYW.Models; using HYW.Helpers; namespace HYW.Controllers { public class TesteController : Controller { //——- private object getValue(string key) { return Session[key]; } private void setValue(string key, object value) { Session[key] = […]