0

出了点问题,我想不通。

_Layout.cshtml拥有:

 <body>
      <script data-main="Scripts/main" 
          src="@Url.Content("~/Scripts/require.js")" 
          type="text/javascript">
      </script>

      @RenderSection("scripts", required: false)
</body>

/脚本/main.js:

require.config({
   paths: {
       "jquery": "jquery-1.9.1"
   }
});

一直到 index.cshtml:

@section scripts
{
    <script type="text/javascript">
        require(['jquery'], function ($) {

        });
    </script>
}

它抛出 404 试图找到 jquery.js。我究竟做错了什么?

upd:是的 main.js 被调用,如果注释 index.cshtml 中的所有内容并将其放在 main.js 的末尾,则类似于

require([
    'jquery'
], function ($) {
   $(function(){
      alert('jquery loaded');
   })
});

它显示了消息

4

4 回答 4

2

我突然想到你的问题是什么。您正在使用应该使用地图的路径。

尝试以下操作,它会将您的 jquery 文件映射到您的短名称。

require.config({
   baseUrl: '/scripts',
   map: {
       "jquery": "jquery-1.9.1.js"
   }
});

此外,如果您点击 index 很有可能没有及时加载您的 requirejs 文件。如果您首先在索引中声明它,我认为这将防止出现竞争条件。

于 2013-03-20T20:16:56.907 回答
1

@David L 是正确的。

当 index.cshtml 中脚本块内的 javascript 运行时,您的require.config块可能尚未运行。

于 2013-03-20T20:17:27.570 回答
1

看来你应该将脚本部分放在_Layout.cshtml的head标签中,main.js的引用通常在head中,所以之前调用了config,我想这就是原因。

于 2013-03-21T03:24:56.640 回答
0

所以我最终从页面中删除data-main属性_Layout.cshtml并直接从页面调用 main:

@section scripts
{
    <script type="text/javascript">
        require(['Scripts/main'], function () {
            require([ "views/home-index"] );
        });
    </script>
}
于 2013-03-20T20:30:53.537 回答