2015-02-27 2 views
1

Итак, я разработал простую программу CRUD из учебного видео backbonejs.org, и код работал нормально. Теперь я пытаюсь реализовать код в requirejs, но он показывает следующее сообщение об ошибке в следующем коде: -Uncaught TypeError: Не удается прочитать свойство 'navigate' of undefined

define([ 
'jquery', 
'underscore', 
'backbone', 
'router', 
'models/Customers/Customer', 
'helper/Serialize' 
], function ($, _, Backbone, Router, Customer, Serialize) { 

    var CustomerEditView = Backbone.View.extend({ 

     el: '.page', 
     events: { 
      'submit .edit-customer-form': 'saveCustomer', 
      'click .delete': 'deleteCustomer', 

     }, 

     saveCustomer: function (ev) { 
      var customerDetails = $(ev.currentTarget).serializeObject(); 
      var customer = new Customer(); 
      customer.save(customerDetails, { 
       success: function (customer) { 
        this.router.navigate('', { trigger: true }); 
       } 
      }); 
      return false; 
     }, 
+0

Пожалуйста, * * отредактируйте вопрос *, чтобы указать точное сообщение об ошибке (включая номер строки, которая соответствует номеру строки в коде, вставленном в вопрос, вы, вероятно, также хотите скопировать точную копию этой строки, чтобы мы точно знаю, какой именно). Эта информация должна быть * в вопросе *, а не просто комментарием. См. [Какие темы можно задать здесь?] (Http://stackoverflow.com/help/on-topic), [Как задать хороший вопрос?] (Http://stackoverflow.com/help/how -to-ask) и [Как создать минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve). – Makyen

+0

Я рассмотрю эти предложения. Спасибо вам –

ответ

1

Вы можете использовать:

customer.save(customerDetails, { 
       success: function (customer) { 
        Backbone.history.navigate('', { trigger: true }); 
       } 

, если вы хотите использовать объект маршрутизатора сначала необходимо инициализировать его как

this.router = new router(); 

и вы можете сказать this.router.navigate('', { trigger: true });

это не является оптимальным создать новый экземпляр во всех представлениях и не предложить сделать объект глобальным. You can use Backbone.history.nvaigate which is alias to router.nvaigate

+0

Большое вам спасибо. Это решило мою проблему –

+0

Использование 'Backbone.history.navigate' вместо' this.router.navigate' также решило мою проблему. Благодаря! – DiMono

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