0

我有問題,有knockout.js和bootstrap模式。在按鈕上單擊我打開bootastrap模式,創建新的城市。然後我提交表單並保存在基地中。問題是因爲只是第一次提交作品。之後,它不起作用。 這裏是如何看起來像僅提交第一次knockout.js和bootstrap modal

HTML文件

> <!-- Modal add new city 
>  ==================================================--> 
>  <div class="modal fade" id="addCity" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
>  <div class="modal-dialog"> 
>   <form data-bind="submit: onSubmit"> 
>   <div class="modal-content"> 
>   <div class="modal-header"> 
>    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
>    <h4 class="modal-title">Dodaj novi grad</h4> 
>   </div> 
>   <div class="modal-body"> 
>    <div class="input-group"> 
>    <span class="input-group-addon">Ime grada</span> 
>    <input type="text" class="form-control" placeholder="Ime grada" data-bind="value : city_name"> 
>   </div 
>  
>  
>   </div> 
>   <div class="modal-footer"> 
>    <button type="button" class="btn btn-default" data-dismiss="modal">Zatvori</button> 
>    <button type="submit" class="btn btn-success">Sacuvaj</button> 
>   </div> 
>   </div><!-- /.modal-content --> 
>   </form> 
>  </div><!-- /.modal-dialog --> 
>  </div><!-- /.modal --> 

JS文件

var viewModel = ko.computed(function() 
{ 
    var self = this; 

     var cities = getAllCities(); 
    self.cities = ko.observableArray(cities); 



    self.city_name = ko.observable(); 
    self.logo_path = ko.observable(); 

    //add new city 
    self.onSubmit = function() 
    { 

     var data = JSON.stringify(
      { 
       city_name : self.city_name(), logo_path : self.logo_path()   
      }); // prepare request data 
     var response = ajaxJsonPost("/services/private_service/add_city", data, false, false); 
     if (response.status === ResponseStatus.SUCCESS) { 
     $("#cityName").attr("value", ""); 
     $('#addCity').modal('hide'); 
     self.cities.push(data); 
     } else { 
      //handle error 
     } 
    }; 

}); 

ko.applyBindings(new viewModel()); 

回答

0

你能不只是做一個Ajax請求,而不是形式提交?例如:

$.ajax({ 
    url: "/services/private_service/add_city", 
    data: data, 
    success: function (data) { 
     $("#cityName").attr("value", ""); 
     $('#addCity').modal('hide'); 
     self.cities.push(data); 
    } 
}); 

除非您爲此方法編寫了腳本,否則我不熟悉「ajaxJsonPost()」。

+0

是的,ajaxJsonPost是發送JSON到休息服務的方法。我認爲問題是當我嘗試隱藏模式。他只是隱藏,下一次當我觸發模態時,它是我第一次觸發的同一模態。我不知道如何在提交後摧毀模態,而不僅僅是隱藏他。 – zholinho

+0

然後在self.cities.push(data)之後,你可以不寫:self.city_name(null)。你不需要摧毀你的模態,你只是想清除你的觀察對象。 –

+0

您還試圖清除標記中不存在的#city_name元素。 –

相關問題