0

我在 requirejs 中加载依赖项时遇到问题,因此尝试重新创建显示我的问题的最简单的可能结构。html 文件包含一个引导输入框,我想在页面加载后填充数据。如果我的 main.js 脚本是:

requirejs.config({
  paths: {
    jquery: 'libs/jquery/jquery-min',
    bootstrap: 'libs/bootstrap/bootstrap.min',
    underscore: 'libs/underscore/underscore-min',
    backbone: 'libs/backbone/backbone-optamd3-min',
    cs: 'libs/require/cs',
    'coffee-script': 'libs/coffeescript/coffee-script'
  },
  shim: {
    bootstrap: {
      deps: ['jquery']
  }
});

require(['cs!router']);

我的主干入口点是一个非常简单的路由器:

define ['jquery','underscore','backbone','bootstrap'], ($, _, Backbone) ->

  AppRouter = Backbone.Router.extend

    initialize: () ->
      @data = ['one','two','three']

    routes: '': 'index'

    index: () ->
      $('.typeahead').typeahead({source:@data})

  app_router = new AppRouter
  Backbone.history.start()

然后如果页面从清理的网络缓存加载,我会在控制台上收到以下错误:

类型错误:a 不是函数

TypeError: $(".typeahead").typeahead 不是函数

错误:模块加载超时:cs!router http://requirejs.org/docs/errors.html#timeout

如果我只是重新加载页面,所有错误都会消失,一切正常。如果有人能向我解释这里发生了什么,我将非常感激,谢谢。

4

1 回答 1

0

好的,通过使用修复

<script data-main="js/main" src="js/libs/require/require-jquery.js"></script>

代替

<script data-main="js/main" src="js/libs/require/require.js"></script>

在主 html 文件中。

于 2012-11-14T09:48:49.193 回答