2014-02-26 47 views
0

好了,所以我試圖將客戶端表單保存到服務器。我正在使用boostrap modal來存儲表單和下劃線模板,以便從主幹獲得for。在表單被提交後,它的所有好的和好的表單都會進入後端並保存在數據庫中。我遇到的問題是,在我保存客戶端並想爲另一個客戶端輸入新信息後,它會發送一個PUT方法,我通過使用「@ model.clear()」解決了這個問題。現在,每件事情仍然有效,但在控制檯中出現「Uncaught ReferenceError:company is not defined」錯誤。我知道這是因爲「.clear()」,但我不知道如何解決它。.clear()方法給未捕獲的ReferenceError:公司沒有定義

class Info.View.Client extends Backbone.View 
el: '.saveClient' 

events: 
    'click .save': 'saveClient' 
    'click .onClose': 'alertRemove' 

initialize:()-> 
    Backbone.Validation.bind(@, 
    { 
    valid: (view, attr)-> 
     $('.company').removeClass('has-error') 
     $('.address').removeClass('has-error') 
     $('.city').removeClass('has-error') 
     $('.companyId').removeClass('has-error') 
     $('.email').removeClass('has-error') 

    invalid: (view, attr, error)-> 
     if attr == 'company' 
     $('.company').addClass('has-error') 
     $('.txt').text('Nevivestai duomenys!') 
     $('.alert').removeClass('alert-success') 
     $('.alert').removeClass('alert-warning') 
     $('.alert').addClass('alert-danger').show() 
     if attr == 'city' 
     $('.city').addClass('has-error') 
     $('.txt').text('Nevivestai duomenys!') 
     $('.alert').removeClass('alert-success') 
     $('.alert').removeClass('alert-warning') 
     $('.alert').addClass('alert-danger').show() 
     if attr == 'address' 
     $('.address').addClass('has-error') 
     $('.txt').text('Nevivestai duomenys!') 
     $('.alert').removeClass('alert-success') 
     $('.alert').removeClass('alert-warning') 
     $('.alert').addClass('alert-danger').show() 
     if attr == 'companyId' 
     $('.companyId').addClass('has-error') 
     $('.txt').text('Nevivestai duomenys!') 
     $('.alert').removeClass('alert-success') 
     $('.alert').removeClass('alert-warning') 
     $('.alert').addClass('alert-danger').show() 
     if attr == 'email' 
     $('.email').addClass('has-error') 
     $('.txt').text('Blogas elektroninis pašto adresas!') 
     $('.alert').removeClass('alert-success') 
     $('.alert').removeClass('alert-warning') 
     $('.alert').addClass('alert-danger').show() 
    } 
    ) 

    saveClient: -> 
    @model.save(
    { 
    company : $('.company').val() 
    country : $('.country').val() 
    city  : $('.city').val() 
    address : $('.address').val() 
    zipCode : $('.zipCode').val() 
    companyId : $('.companyId').val() 
    vat  : $('.vat').val() 
    account : $('.account').val() 
    bank  : $('.bank').val() 
    swift  : $('.swift').val() 
    email  : $('.email').val() 
    phone  : $('.phone').val() 
    fax  : $('.fax').val() 
    }, 
     error: (model, response) => 
     (@$ '.txt').text('Išsųsti nepavyko') 
     (@$ '.alert').removeClass('alert-danger') 
     (@$ '.alert').removeClass('alert-success') 
     (@$ '.alert').addClass('alert-warning') 
     success: (model, response) => 
     if response.clientInfo == 0 
     (@$ '.txt').text('Sėkmingai išaugota!') 
     (@$ '.alert').removeClass('alert-danger') 
     (@$ '.alert').removeClass('alert-warning') 
     (@$ '.alert').addClass('alert-success').show() 
     @model.id = response.id 
     vent.trigger 'addNewClient', @model 
     $('.saveClient input').val '' 
     @model.clear() 
     else 
     (@$ '.txt').text('Išsaugoti nepavyko') 
     (@$ '.alert').removeClass('alert-success') 
     (@$ '.alert').removeClass('alert-warning') 
     (@$ '.alert').addClass('alert-danger').show() 
    ) 

這是模板

<tbody class="clientList"> 
      <script type="text/template" id="Client-String"> 
       <td><%- company %></td> 
       <td><%- companyId %></td> 
       <td><%- phone %></td> 
       <td><%- email %></td> 
       <td><button class="btn btn-default edit" data-toggle="modal" data-t   arget="#editClient">{% trans %}Edit{% endtrans %}</button></td> 
       <td><button class="btn btn-danger remove">{% trans %}Remove{% endtrans %}</button></td> 
      </script> 
      </tbody> 

和該模板

class Info.View.Clients extends Backbone.View 
    tagName: 'tr' 

    template: template('Client-String') 

    events: 
    'click .remove': 'destroy' 
    'click .edit': 'edit' 

    initialize:()-> 
    @model.on 'change', @render, @ 
    @render() 

    render: -> 
    @.$el.html @template @model.toJSON() 

    edit: -> 
    vent.trigger 'clientEdit', @model 

    destroy: -> 
    @model.destroy() 
    @remove() 

    remove: -> 
    @.$el.remove() 



class Info.View.ClientList extends Backbone.View 
    el: '.clientList' 

    initialize:()-> 
    model = new Info.Model.Client 
    new Info.View.Client model: model 
    vent.on 'addNewClient', @appendNewClient, @ 
    vent.on 'clientEdit', @getClientInfo, @ 
    @render() 

    render: -> 
    if @collection 
    @collection.each(@appendNewClient, @) 

    appendNewClient: (model)-> 
    @.$el.append(new Info.View.Clients(model: model).el) 

    getClientInfo: (model)-> 
    $('.editForm').html(new Info.View.Edit(model: model).el) 

回答

0

第一變化這一行

success: (model, response) => 

這一個

視圖3210
success: (model, response) -> 

,並嘗試通過model.clear()以明確傳遞給success回調

+0

model更換@model.clear()都能跟得上它仍然給我「未捕獲的ReferenceError:公司沒有定義」雖然有趣的是它只是給它第一次保存後,如果我再次保存它,它不顯示相同的錯誤 – Krokodilas

+0

我已經更新了我的答案。 –

+0

是的,那麼dosn't幫助cose現在它說:「未捕獲的類型錯誤:無法設置屬性'ID'未定義的女巫作爲回報給我一個PUT方法,如果我嘗試保存另一種形式立即 – Krokodilas

相關問題