小编Are*_*ren的帖子

jQuery,寻找一种更智能的初始化方法

我正在寻找一种更好的方法来管理大型项目中的全局组件/插件/窗口小部件初始化.它有许多jQuery驱动的组件,我想快速有效地初始化,在浏览互联网之后,我只是真正找到了在小型网站中只有现实/高效的短视示例.

问题

我想找到一种聪明而优雅的方法来摆脱这种情况:

$(function() { $('.widget-one').widgetOne(); });
$(function() { $('.widget-two').widgetTwo(); });
$(function() { $('.widget-three').widgetThree(); });
$(function() { $('.widget-four').widgetFour(); });
Run Code Online (Sandbox Code Playgroud)

现在,在你揍我之前,让我说我知道在大多数情况下(但不是全部).widget-one是一个糟糕的选择器,因为它会在旧版浏览器中获取dom中的所有元素并检查类.

问题是,这些小部件不是一次性的,我可能不会提前知道它们存在(在Web应用程序视图中生成,可能是基于逻辑或产品循环的2-3次).

所以以下解决方案已经出来:

$(function() { $('#WidgetOne').widgetOne(); });
Run Code Online (Sandbox Code Playgroud)

<span id="WidgetOne_12345">...</span>
<script type="javascript">
   $(function() { $('#WidgetOne_12345').widgetOne(); });
</script>
Run Code Online (Sandbox Code Playgroud)

思考

这不是一个新问题,它从第一天开始就存在.它仍然让我感到困惑,即使在这个成熟的水平上,使用jQuery也很难解决这个问题.无论是那个还是我都错过了一些明显的东西.

不幸的是,google-fu在这个问题上的表现非常糟糕,因为每个人都建议以下两点之一:

  • jQuery .live().delegate()catch-all事件处理程序.这在基本层面上是可怕的..delegate()不会那么糟糕,但这要求插件/小部件/控件/完全由事件驱动.这肯定会在很多情况下起作用,但在其他情况下则不然.它还使跟踪和组织代码非常复杂.我甚至不会进入.live(),对于大型复杂站点,事件冒泡很慢并且当你将足够的组件放在一起时,匹配的查询列表变得很大,使得每个点击/焦点/任何事件在整体上逐渐变慢整个页.
  • 涉及插件的解决方案,例如liveQuery,这是一个非常酷的插件,但它主要似乎是为了解决一个不同的问题(由ajax/dom创建引入新项目的问题),并且仍然会逐渐增加堆叠的查询越多,需要检查的查询越多.

结论

是一个更好的办法,我知道必须有一个.我已经厌倦了我的google fu这个主题,但仍然找不到比jQuery 1.3.2更新的想法/概念/例子/讨论或者考虑到宏伟的图片.在一个完美的世界中,这不会是一个问题,因为每个人都会使用具有现代标准的智能浏览器和一个不错的javascript引擎,并且.class查询不会花费很多时间,但不幸的是情况并非如此.

我正在寻找关于如何解决这个问题的想法,在经历了许多与此类似的SO问题之后,以及关于各种jquery技术的许多文章我觉得如果信息出现在那里它被埋没在许多误报和"101最好的jquery之下插件"使用jQuery在任何搜索中出现的结果.我知道那里有人遇到了这种困境.

想法,链接,例子,任何事情都是受欢迎的,只需要有更好的方法.

javascript performance jquery initialization

6
推荐指数
1
解决办法
459
查看次数

我可以重写整个git存储库的历史记录以包含我们忘记的内容吗?

我们最近完成了从Mercurial到Git的转换,一切顺利,我们甚至能够获得所需的转换,使所有内容在存储库中看起来/工作相对正确.我们添加了一个.gitignore并开始了.

但是,只要我们加入/合作任何旧的功能分支,我们就会遇到一些极端的减速.稍微探索一下,我们发现,因为当我们查看其他提交而没有合并时.gitignore,它只被添加到develop分支中,因为它正在窒息,试图分析我们所有的构建工件(二进制文件)等...因为它有...没有.gitignore这些旧分支的文件.

我们想要做的是有效地使用.gitignore插入新的根提交,以便它可以追溯填充所有头/标签.我们很乐意重写历史记录,我们的团队规模相对较小,所以当历史重写完成后,让每个人都停下来执行此操作并重新启动他们的存储库是没有问题的.

我已经找到了关于将master重新设置到新的root提交上的信息,这对master来说很有用,问题是它在旧的历史记录树上保留了我们的功能分支,它还用新的提交日期/时间重放整个历史记录.

任何想法或我们在这一个运气不好?

git git-rebase git-filter-branch git-rewrite-history

6
推荐指数
1
解决办法
443
查看次数

ASP.NET/IIS7 Url重写映射不起作用

我按照说明学习IIS的网页,为我的asp.net应用程序添加了重写映射的静态重定向.

以下是配置:

<rule name="Redirect rule1 for Information" stopProcessing="true">
    <match url=".*" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{Information:{REQUEST_URI}}" pattern="(.+)" />
    </conditions>
    <action type="Rewrite" url="{C:1}" appendQueryString="true" />
</rule>
Run Code Online (Sandbox Code Playgroud)

<rewriteMaps>
    <rewriteMap name="Information">
        <add key="/Information/CorporateSales.aspx"
             value="/KB/Information/CorporateSales" />
        <add key="/Information/ComputerRepair.aspx"
             value="/KB/Information/ComputerRepair" />
    </rewriteMap>
</rewriteMaps>
Run Code Online (Sandbox Code Playgroud)

这甚至最初是由IIS管理器中的向导创建的,用于使用重写映射.

所以我的想法是/Information/CorporateSales.aspx- > /KB/Information/CorporateSales301重定向(永久移动).

但是我只是加载原始的aspx页面(我们将在以后删除).我甚至删除了文件,因为它默认为现有资源,并且我只是得到一个没有重定向的普通404.

有人有想法吗?

让我澄清一下:

重写模块工作,它已安装并运行.我的标准正则表达式规则运行良好.但我的重写地图却没有.

asp.net iis-7 url-rewriting

5
推荐指数
2
解决办法
1万
查看次数

无法在codeigniter中获取帖子表单提交值

我尝试了一个简单的表单提交但是我无法在控制器上使用$this->input->post以及$_POST[]方法获取表单值.我的观点是

<html>
<head>
    <title> Feedback page</title>       
</head>
<body>

    <?php echo form_open('feedback/save'); ?>       
    <p>
        <label>name: </label>
        <?php echo form_input('name'); ?>

    </p>
    <p>
    <label>Email: </label>
        <?php echo form_input('email'); ?>
    </p>
    <p>
    <label>Feedback: </label>
        <?php echo form_textarea('feedback'); ?>
    </p>
    <p>
        <?php echo form_submit('submit','Submit'); ?>
    </p>

    <?php echo form_close(); ?>

</body> 

</html>
Run Code Online (Sandbox Code Playgroud)

和控制器部分是

<?php
class Feedback extends CI_Controller {

function __construct() {
    parent::__construct();      
    $this->load->model("MFeedback");

}
function index() {

    $this->load->view('home/feedback_view.php');
    //print "loaded";


}

function save() {
    print "called";     
    print_r($this->input); 
    $name = …
Run Code Online (Sandbox Code Playgroud)

codeigniter

5
推荐指数
1
解决办法
2万
查看次数

与可选参数值的一致性

我已经使用.NET 4以有限的方式使用可选参数了一段时间.我最近想过如何实现可选参数以及我遇到的事情.

请看以下示例:

public interface ITest
{
    void Go(string val = "Interface");
}
Run Code Online (Sandbox Code Playgroud)

实现这一点的唯一要求是实现最大形式的签名void Go (string val),实际上我们不需要实现可选参数,因为编译器会处理该连接(尽管使用可选参数的选项在使用时不可用)具体类直接).

有了这个说法,为了在两个地方提供功能,并且为了在实现中可以发现,可以在接口和实现中实现可选声明.事实上,生产力工具ReSharper在实现接口时会自动将此可选声明拉到具体类型.这似乎是合乎逻辑的事情.然而...

什么阻止我们在具体类型和界面中使用不同的值?这引发了我今天早上的警钟,好像有人进入更改该值,并忘记将其保留在覆盖/接口的继​​承之下,根据您访问对象的方式,行为将完全不同.调试可能非常令人沮丧.

试试这个LINQpad脚本:

void Main()
{
    IA iface = new A();
    A cls = new A();

    iface.Go();
    cls.Go();
}

interface IA
{
    void Go(string val = "Interface");
}

class A : IA
{
    public void Go(string val = "Class") { val.Dump(); }
}
Run Code Online (Sandbox Code Playgroud)

输出将是:

Interface
Class
Run Code Online (Sandbox Code Playgroud)

这让我想到了我的实际问题:

题:

什么(如果有的话?)这样,我们才能保障这一点,而不会失去使用可选的参数变体与具体类的能力,所以它的发现/读取到编码器?

以前有人遇到过这个问题吗?你是怎么解决的?是否有任何最佳实践可以帮助防止此问题在多开发人员大规模代码库中变得普遍?

.net c# coding-style optional-parameters

5
推荐指数
1
解决办法
250
查看次数

LINQ数值分组

寻找一种n用LINQ 分组元素集的方法.

即:

{1,2,3,4,5,6,7,8,9}:

  • 按2分组: {{1,2},{3,4},{5,6},{7,8},{9}}
  • 按3分组: {{1,2,3},{4,5,6},{7,8,9}}
  • 按4分组: {{1,2,3,4},{5,6,7,8},{9}}
  • 等等...

我现在只能想到做这样的事情的方法是使用匿名类型生成组索引,然后按该索引进行分组.如果可能的话,我正在寻找更清洁的解决方案.

例:

int groupSize = n;
int groupCount = 0;
int groupNum = 0;

IEnumerable<T> items;
IEnumerable<IGrouping<int,T>> groups = items
    .Select(i => new 
    {
      Index = ((groupCount++) % groupSize == 0) ? groupNum++ : groupNum,
      Item = i
    })
    .GroupBy(c => c.Index, d => d.Item);
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我想避免这种令人讨厌的事情.

.net c# linq

4
推荐指数
1
解决办法
112
查看次数

获取具有给定返回类型的所有方法

这段代码错了吗?它只是没有返回任何东西:

public IEnumerable<string> GetMethodsOfReturnType(Type cls, Type ret)
{
   var methods = cls.GetMethods(BindingFlags.NonPublic);
   var retMethods = methods.Where(m => m.ReturnType.IsSubclassOf(ret))
                           .Select(m => m.Name);
   return retMethods;
}
Run Code Online (Sandbox Code Playgroud)

它返回一个空的枚举器.

注意:我在ASP.NET MVC Controller上调用它来寻找ActionResults

GetMethodsOfReturnType(typeof(ProductsController), typeof(ActionResult));
Run Code Online (Sandbox Code Playgroud)

.net c# reflection

3
推荐指数
1
解决办法
2493
查看次数

跟踪静态构造函数执行

我遇到了一个问题,其中一个类的静态构造函数在它应该被调用之前被调用.(即,DI/IoC未设置,它从服务定位器返回null/exception).

遗憾的是,我对静态构造函数没有很多控制权,不要问我为什么要依赖DI/IoC进行设置,但确实如此.

在我的应用程序中,在我的IoC准备就绪之前,没有任何东西应该引用此类静态或其他方式,但静态构造函数仍在执行.

有没有一种简单的方法来确定导致构造函数执行的行?注意:我无法断点,static constructor因为这是在ASP.NET的远程调试器可以附加到Web服务器之前发生的(在Global.asax.cs中)

.net c# debugging static-constructor

3
推荐指数
2
解决办法
5240
查看次数

CodeIgniter的局限性

codeigniter可能面临哪些限制.我知道我的问题非常广泛但我想知道专家是否有任何具体限制.

这是因为对于我的网站,我想要像谷歌地图一样的视觉表现.必须以视觉方式显示的步骤.codeigniter可以处理所有内容还是有任何限制?

model-view-controller codeigniter

3
推荐指数
1
解决办法
1171
查看次数

MVVM窗口/控制操作

我正在构建一个WPF MVVM应用程序,我想保留我能够符合MVVM的东西(我知道有些东西是过度工程,尽管这里尽力而为).

我遇到了一个小小的dillema,我需要根据视图模型中的方法中的一些逻辑隐藏/关闭一个窗口.

我无法为我的生活想出一个可靠的方法来做到这一点.我已经将一个Visibility属性绑定到窗口的Visibility DP,它可以工作(sorta)但是我如何调用Close()对话框?

我正在使用View-First MVVM,因此视图模型不了解视图,视图实例化视图模型(通过DI/IoC)并将其设置为DataContext.

命令以错误的方式工作,事件是不可能的,除非我在代码后面绑定它是id而不是如果有一个MVVM方法来完成它并不完全复杂.

来自更大的SO社区的任何想法?

或者也许我一般都缺少一些关于MVVM的东西?无论哪种方式,让我知道:o

.net wpf mvvm

2
推荐指数
1
解决办法
309
查看次数