2015-11-04 7 views
1

Я создал эту функцию, и я не знаю, почему она возвращает [Object Object], а не то значение, которое я получил. Функция должна возвращать строку, такую ​​как (Main/121). Тем не менее, предупреждение показывает значение, которое я хотел.Функция return [Object Object] не значение

module.Order = Backbone.Model.extend({ 
     initialize: function (attributes) { 
      Backbone.Model.prototype.initialize.apply(this, arguments); 
      this.pos = attributes.pos; 
      var that = this; 
      this.sequence_number = this.pos.pos_session.sequence_number++; 
      debugger; 
      this.uid = this.generateUniqueId(); 
      this.pro = this.get_the_other_main(); 
      this.set({ 
       creationDate: new Date(), 
       orderLines: new module.OrderlineCollection(), 
       paymentLines: new module.PaymentlineCollection(), 
       name: _t("Order ") + this.uid, 
       client: null, 
       sales_person: null, 
       sales_person_name: null, 
       new_id: this.pro 
      }); 
      this.selected_orderline = undefined; 
      this.selected_paymentline = undefined; 
      this.screen_data = {}; // see ScreenSelector 
      this.receipt_type = 'receipt'; // 'receipt' || 'invoice' 
      this.temporary = attributes.temporary || false; 
      return this; 
     }, 
     get_the_other_main: function (callback) { 
      return new instance.web.Model("pos.order").call('get_the_product', []).done(
       function(results) { 
        var result = results.toString().split(','); 
        var stringsl=result[1]; 
        var thenum = stringsl.replace(/^\D+/g, ''); 
        var sasa=parseInt(thenum,10)+1 
        var zika=('00' + sasa).slice(-4) 
        var the_str=result[1].slice(0,-4).toString(); 
        var new_seq_sasa=the_str+zika 
        alert(new_seq_sasa) 
        return callback(new_seq_sasa); 
       } 

      ); 
     }, 
+2

Похож асинхронный вызов, который означает, что вы не можете вернуться от него. – epascarello

+0

то как я могу получить значение? –

ответ

2

Вы должны использовать callback аргумент и изменить то, как вы вызываете вашу функцию:

get_the_other_main: function (callback) { 
      return new instance.web.Model("pos.order").call('get_the_product', []).done(
       function(results) { 
        var result = results.toString().split(','); 
        var stringsl=result[1]; 
        var thenum = stringsl.replace(/^\D+/g, ''); 
        var sasa=parseInt(thenum,10)+1 
        var zika=('00' + sasa).slice(-4) 
        var the_str=result[1].slice(0,-4).toString(); 
        var new_seq_sasa=the_str+zika 
        alert(new_seq_sasa) 
        return callback(new_seq_sasa); 
       } 

      ); 
     }, 

Вместо:

this.pro = this.get_the_other_main(); 

использования (я переработан код с комментариями):

var that = this; 
this.get_the_other_main(function (result) { 
    that.pro = result; 
}); 
+1

Это, вероятно, обещание вернулось, он должен работать с обещанием, а не возвращаться к обратным вызовам. – MinusFour

+0

Извините, я не могу понять, что я должен заменить :(не могли бы вы объяснить больше? Что вы подразумеваете под obj.get_the_other_main (функция (результат), и я пытаюсь выполнить код и все еще получаю [Object Object] –

+0

Показать код, где вы на самом деле используйте эту функцию, где вы вызываете 'get_the_other_main()'. –