2

RequireJS を使用してMasonryをアプリにロードしようとしていますが、追加するたびにバックボーンが「オブジェクトは関数ではありません」というエラーを吐き出し続けます。

編集:おそらくこの問題に関連しています。

main.js

require.config({
  paths: {
    jquery: 'lib/jquery-1.9.1',
    underscore: 'lib/underscore-1.5.2',
    backbone: 'lib/backbone-1.0.0',
    masonry: 'lib/masonry.pkgd'
  },
  shim: {
    backbone: {
      deps: ['underscore', 'jquery'],
      exports: 'Backbone'
    },
    underscore: {
      exports: '_'
    }
  }
});

require(['app'], function(App){
  App.initialize();
});

app.js

define([
  'jquery', 
  'underscore', 
  'backbone',
  'masonry',
  'collections/ideas',
], function($, _, Backbone, Masonry, IdeasCollection) {

  var IdeasView = Backbone.View.extend({
    el: $('#container'),
    initialize: function() {
    ...    
    },
    render: function(){
    ...
    }
  });

  return IdeasView;
});
4

2 に答える 2

4

RequireJS で Masonry を jQuery プラグインとして使用するには、jQuery bridget を実行する必要があります。

ドキュメントを確認してください: http://masonry.desandro.com/appendix.html#requirejs

ここからブリジットをダウンロードできます: https://github.com/desandro/jquery-bridget

次に、実行ブリジットを含めることができ、正常に動作するはずです

define([
    'jquery'
    , 'underscore'
    , 'backbone'
    , 'config'
    , 'app'
    , 'jquery.masonry'
    , 'jquery.bridget'
], function ($, _, Backbone, Config, App, Masonry, bridget) {

   initialize : function () {

        bridget('masonry', Masonry);

   }

});

それが役に立てば幸い!

于 2014-03-14T07:30:12.180 に答える