2015-05-05 1 views
2

Я использую browserify в Backbone проекте и подкладки owlCarousel , потому что это не commonJS как модуль. Трансформация shim, похоже, работает, но не тогда, когда мне это действительно нужно.Browserify расслоение неопределенного depency

app.js Мой файл выглядит следующим образом:

var settingsView = require("./settingsView.js"); 

new settingsView(); 

и мои settingsView

var app = require("./controllers.js"), 
    $ = require("jQuery"), 
    Backbone = require("Backbone"), 
    owlCarousel = require("owlCarousel"); 
    Backbone.$ = $; 

module.exports = Backbone.View.extend({ 
    el: ".settings", 

    events: { 
    "click .carousel-img": "setBackground", 
    "click .palette div": "setTextColor" 
    }, 

    options: { 
    singleItem: true, 
    pagination: false, 
    navigation: true, 
    mouseDrag: false 
    }, 

    initialize: function() { 
    this.initCarousel(); 
    }, 

    initCarousel: function() { 
    /* This is causing the problem */ 
     this.owlCarousel = this.$el.find(".carousel").owlCarousel(this.options); 
    } 
}) 

где мой package.json

"browser": { 
    "jquery": "./node_modules/jquery/dist/jquery.js", 
    "owlCarousel": "./vendor/owl-carousel/owl-carousel/owl.carousel.js" 
    }, 
    "browserify": { 
    "transform": [ 
     "browserify-shim" 
    ] 
    }, 
    "browserify-shim": { 
    "jquery": "$", 
    "owlCarousel": { 
     "depends": ["jquery:$"] 
    } 
    } 

Ошибка это дает мне:

Uncaught TypeError: this.$el.find(...).owlCarousel is not a function 

во время выполнения. Но, если я запустил $("div").owlCarousel в консоли после того, как дом готов, он работает.

Любая помощь?

+0

Вы звоните 'initCarousel' с вашей точки зрения в' initialize', но на этом этапе ничего на самом деле еще оказаны. Переместите вызов в 'initCarousel' после отображения представления. – ivarni

+0

Вид уже находится в html – steo

+0

Плохо, я подумал, что вы просто оставили функцию 'render' для краткости. – ivarni

ответ

1

Я решил делать

var app = require("./controllers.js"), 
    $ = require("jQuery"), 
    Backbone = require("Backbone"), 
    owlCarousel = require("owlCarousel"); 
    Backbone.$ = $;  
    $.fn.owlCarousel = owlCarousel 

 Смежные вопросы

  • Нет связанных вопросов^_^