无法读取未定义的属性'isArray'

时间:2013-10-03 15:28:44

标签: javascript requirejs yeoman typeahead.js

我正在使用backbone,requirejs和yeoman构建应用程序。

我正在使用twitter的typeaheadjs并收到此错误随机!大部分时间它都可以工作,但有时甚至没有工作,甚至不会抛出任何错误! 构建之后,预先输入甚至无法工作(咕噜声)这是我称之为先行者的页面

define([
    'jquery',
    'underscore',
    'backbone',
    'templates',
    ...
    'typeahead',
    ...
    ], function ( $, _, Backbone, JST, a, b, typeahead, c, d) {

这是我在视图

的render()内初始化Typeahead的地方
this.collection.fetch({
    success: function (data) {
        $('#SerachProduct').typeahead({
            name: 'abc',
            valueKey: 'name',
            local: data.toJSON(),
            template: JST['app/scripts/templates/typeahead.ejs']
        });
    },
    error: fun() {..
    }
}

这是github repo Github

1 个答案:

答案 0 :(得分:2)

Typeahead不兼容AMD,您需要为其定义shim配置。它会是这样的:

requirejs.config({
  // ...
  shim: {
    "typeahead": {
      deps: ['jquery'],
      exports: 'jQuery.fn.typeahead'
    }
  }
});

define(['jquery', 'typeahead'], function ($, youCanIgnoreThis) {
  var opts = {
    // ...
  };
  $("#SearchProduct").typeahead(opts);
})

阅读the documentation了解详情。