Typeahead.js无法在服务器上运行

时间:2013-09-11 02:31:43

标签: javascript jquery heroku meteor typeahead.js

我能够在我的开发机器上运行typeahead.js插件,但是一旦我将代码推送到heroku,它就停止了工作。这是相关的代码:

if (Meteor.isClient) {
  window.onload = function() {
    $("input.entry").typeahead({
     name: "movies",
     remote: {
      url: "http://api.rottentomatoes.com/api/public/v1.0/movies.json?apikey=####################&page_limit=5&q=%QUERY",
      dataType: 'jsonp',
      template: ["<p><strong>{{title}}</strong></p>"],
      engine: Handlebars,
      filter: function(parsedResponse) {
        var dataset = [];
        movies = parsedResponse.movies;
        for(i = 0; i < movies.length; i++) {
          dataset.push({
              value: movies[i].title,
              details: movies[i].critics_consensus,
              image: movies[i].posters.profile
          });
        }
        return dataset;
      }
    }
  });

  $('input.entry').bind('typeahead:selected', function(obj, datum) {
    Movies.insert({
      name: datum.value,
      consensus: datum.details,
      image: datum.image,
      voters: [],
      creator: Meteor.user(),
      time: Date.now()
    });
  });
}

如果我在页面加载后将window.onload的内容粘贴到javascript控制台中,则可以正常工作。

有谁知道为什么这不能正常工作?

由于

2 个答案:

答案 0 :(得分:0)

您的应用是http://api.rottentomatoes.com吗?否则你会遇到CORS问题。

答案 1 :(得分:0)

我能够通过将typeahead.js代码放在此块Template.entryfield.rendered = function () { ... }

中来实现它。