代码之家  ›  专栏  ›  技术社区  ›  Dimskiy

Telerik MVC控件,OnDocumentReady正在启动两次

  •  2
  • Dimskiy  · 技术社区  · 15 年前

    我首先制作了一个新的telerikmvc应用程序解决方案。

    站点。主:

        </div>
        <%: Html.Telerik().ScriptRegistrar().DefaultGroup(group =>
              group.Combined(true).Compress(true).Add("Index.js")) %>
    </body>
    </html>
    

        <%: Html.Telerik().ScriptRegistrar().OnDocumentReady("Index.Init()") %>
    </asp:Content>
    

    索引.js:

    var Index = function () {
        return {
            Init: function () {
                alert('1');
            }
        };
    } ();
    

    当我加载Index.aspx时,Index.js中的Init()函数将被触发两次,因此我看到两个警报相继出现。如果我给Init()函数中的一个按钮分配一个click处理程序,并用FireBug点击该按钮,它实际上显示了分配给该按钮的两个事件。为什么会这样?

    编辑

    在一些更激烈的窃听之后,我发现对scriptregistrator的两个调用都被呈现。如何使只有一个主渲染?

    2 回复  |  直到 8 年前
        1
  •  2
  •   Dimskiy    15 年前

    为了回答我自己的问题,问题在于

    <%:  %>
    

    有结肠。

    主人:

    <% Html.Telerik().ScriptRegistrar().DefaultGroup(group =>
       group.Combined(true).Compress(true).Add("json2.js")).Render(); %>
    

    视图:

    <% Html.Telerik().ScriptRegistrar().Scripts(scripts =>
       scripts.AddGroup("IndexGroup", group =>
       group.Add("~/Scripts/Index.js"))).OnDocumentReady("Index.Init()");  %>
    
        2
  •  0
  •   Skorunka FrantiÅ¡ek    13 年前

    对于MVC Razor ViewEngine:

    @{
        Html.Telerik().ScriptRegistrar().OnDocumentReady(
        @<text>
            alert('onLoaded');
        </text>);
    }
    
    推荐文章