2013-07-26 1 views
2

Когда я запускаю свое базовое приложение в NetBeans 7.3.1, основная страница отображается в течение нескольких секунд, может быть, 5 или 6, а затем на выходе NetBeans я вижу следующий ...backbone.js Uncaught TypeError: Невозможно прочитать свойство «Просмотр» нулевого

Uncaught TypeError: Cannot read property 'View' of null (18:43:36:307 | error, javascript) 
    at (js/views/HomeView.js:6:28) 
    at d.execCb (js/libs/require/require.js:27:197) 
    at o (js/libs/require/require.js:10:471) 
    at (js/libs/require/require.js:12:184) 
    at o (js/libs/require/require.js:12:75) 
    at (js/libs/require/require.js:14:1) 
    at o (js/libs/require/require.js:12:75) 
    at l (js/libs/require/require.js:12:336) 
    at g.finishLoad (js/text.js:10:192) 
    at g.load (js/text.js:10:354) 
    at window.undefined.window.navigator.window.document.c.onreadystatechange (js/text.js:7:30) 
Uncaught TypeError: Cannot read property 'Model' of null (18:43:36:317 | error, javascript) 
    at (js/models/Member.js:6:26) 
    at d.execCb (js/libs/require/require.js:27:197) 
    at o (js/libs/require/require.js:10:471) 
    at x (js/libs/require/require.js:15:186) 
    at m (js/libs/require/require.js:15:207) 
    at g.completeLoad (js/libs/require/require.js:21:388) 
    at d.onScriptLoad (js/libs/require/require.js:27:490) 
Uncaught Error: Load timeout for modules: text!templates/homeTemplate.html 
http://requirejs.org/docs/errors.html#timeout (18:43:38:511 | error, javascript) 
    at N (js/libs/require/require.js:7:217) 
    at A (js/libs/require/require.js:16:230) 
    at (js/libs/require/require.js:16:394) 

Похоже, что RequireJS не может загрузить опорную магистраль. Вот main.js ...

// Filename: main.js 

require.config({ 
    shim: { 
     underscore: { 
      exports: '_' 
     }, 
     backbone: { 
      deps: ['underscore', 'jquery'], 
      exports: 'Backbone' 
     } 
    }, 
    paths: { 
     jquery: 'libs/jquery/jquery-min', 
     underscore: 'libs/underscore/underscore-min', 
     backbone: 'libs/backbone/backbone-min', 
     templates: '../templates' 
    } 
}); 

require([ 
    'app', 

], function(App) { 
    App.initialize(); 
}); 

Я полностью спиннинг мои колеса на этом. Почему требуется не загружать магистраль?

@ Sushanth--: Отредактированный исходное сообщение, чтобы включить HomeView.js

Вот это HomeView.js ...

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'text!templates/homeTemplate.html' 
], function($, _, Backbone, homeTemplate) { 

    var HomeView = Backbone.View.extend({ 

     el: $("#page"), 

     initialize: function() { 
     }, 

     render: function() { 
      var compiledTemplate = _.template(homeTemplate, {}); 
      this.$el.html(compiledTemplate); 
     } 

    }); 

    return HomeView; 

}); 

@ Sushanth--: Я рендеринга от маршрутизатора. Js ...

// Filename: /js/router.js 

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'views/HomeView', 
    'views/MembersView' 
], function($, _, Backbone, HomeView, MembersView) { 

    var AppRouter = Backbone.Router.extend({ 
    routes: { 
     // Define some URL routes 
     'members': 'showMembers', 
     // Default 
     '*actions': 'defaultAction' 
    } 
    }); 

    var initialize = function(){ 
     //alert('router init'); 
    var app_router = new AppRouter; 

    app_router.on('route:showMembers', function() { 
     // Like above, call render but know that this view has nested sub views which 
     // handle loading and displaying data from the GitHub API 
     var membersView = new MembersView(); 
    }); 

    app_router.on('route:defaultAction', function (actions) { 
     // We have no matching route, lets display the home page 
     var homeView = new HomeView(); 
     homeView.render(); 
    }); 

    // Unlike the above, we don't call render on this view as it will handle 
    // the render call internally after it loads data. Further more we load it 
    // outside of an on-route function to have it loaded no matter which page is 
    // loaded initially. 
    //var footerView = new FooterView(); 

    //alert('hello from router.js'); 
    //Backbone.history.start({pushState: true, root: "/modular-backbone/"}); 
    //Backbone.history.start({pushState: true}); 
    Backbone.history.start(); 
    }; 

    return { 
     initialize: initialize 
    }; 
}); 

Добавлен тестовый сигнал тревоги в main.js, app.initialize ...

require(['app'], function(App) { 
    // THIS ALERT NEVER DISPLAYS!?!?! 
    alert('inside main.js before app.initialize'); 
    App.initialize(); 
}); 
+0

Вы не нашли значения для свойства 'baseUrl'? –

+0

Куда бы этот метод пошел? – Locohost

+0

@Locohost .. Это не метод. Это свойство файла конфигурации, в котором указано, что должно быть базовым файлом файлов. Проверьте это http://requirejs.org/docs/api.html#config-baseUrl –

ответ

1

Я заменил файлы Backbone и Underscore js на версии AMD и начал работать.