2016-02-27 101 views
2

工作app.js木偶AppRouter不Browserify

module.exports = function() { 
if (!window.__medicineManager) { 
    var Backbone = require('backbone'); 
    var Marionette = require('backbone.marionette'); 

    var MedicineManager = new Marionette.Application(); 

    MedicineManager.addRegions({ 
     mainRegion: "#main-region" 
    }); 

    MedicineManager.navigate = function (route, options) { 
     options || (options = {}); 
     Backbone.history.navigate(route, options); 
    }; 

    MedicineManager.getCurrentRoute = function() { 
     return Backbone.history.fragment; 
    }; 

    MedicineManager.on("start", function() { 
     if (Backbone.history) { 
      Backbone.history.start(); 
     } 
    }); 

    MedicineManager.start(); 
    window.__medicineManager = MedicineManager; 
} 
return window.__medicineManager; 
}(); 

medicine_app.js

var MedicineManager = require('app'); 
var Backbone = require('backbone'); 
var Marionette = require('backbone.marionette'); 
MedicineManager.module("MedicineApp", function (MedicineApp) { 
    MedicineApp.Router = Marionette.AppRouter.extend({ 
     appRoutes: { 
      "": "showSearchOption", 
      "show/*id": "showMedicine" 
     } 
    }); 

    var API = { 
     showSearchOption: function() { 
      console.log('show search option'); 
     }, 
     showMedicine: function (id) { 
      console.log('show ' + id); 
     } 
    }; 

    MedicineManager.addInitializer(function() { 
     console.log('MedicineApp.Router initialised'); 
     new MedicineApp.Router({ 
      controller: API 
     }); 
    }); 
}); 

我知道木偶模块已过时,所以请忽略,因为我仍在测试Browserify。

问题是"": "showSearchOption"路由没有被触发。

我的问题被提及在Marionette.AppRouter as Backbone.Router 我无法理解如何解决它?


编辑:
我觉得是,骨干实例木偶内部使用不同于我所得到的,当我require('backbone')
对此问题的任何建议?

+0

你确定Backbone.history.start()被调用吗? –

+0

你是什么意思'木偶模块已弃用'? – Kevin

回答

0

你是对的:问题是,木偶要求自己的Backbone实例。

在我遇到一种解决方案之前,我一直在反对这个问题。我通过升级到具有平坦依赖性结构的NPM v3,然后设置window.Backbone = require('backbone');来解决此问题。

如果你不想这样做,我想你也可以使用peerDependencies,我学到了很多关于here的知识。请注意,我没有测试过这种方式;我很高兴使用NPM v3。