2016-12-13 3 views
0

В моем коде нокаута сначала я обновляю модель представления, тогда я нахожу API с большими нагрузками на основе этого обновления. Но я хочу, чтобы мой вид будет обновлен после того как в API вызова завершена, как сделать этоВременно отключено обновление вида после изменения модели просмотра в KnockoutJS

Кодекс, как этот

for (var i = 0; i < self.AppEntityErrorRequestAttributes().length; i++) 
      self.AppEntityActionRequestAttributes.push(self.AppEntityErrorRequestAttributes()[i]); 
// Dont want to update view 
var validationStatus = FilterValidation(self); 
     //debugger; 
     //var filterData = self.AppEntityErrorRequestAttributes(); 
     //filterData = ko.toJSON(self.AppEntityErrorRequestAttributes()); 
     if (validationStatus == false) { 
      toastr.error("You cannot save filter with a blank key", 'Sorry!'); 
     } 
     else { 
      ajaxRequest("POST", baseUrl + 'api/' + controller + "save/", self) 
       .done(function (data, textStatus, jqXHR) { 
        $(location).attr('href', baseUrl + controller + "?entityId=" + entityId); 
       for (var i = 0; i < self.AppEntityErrorRequestAttributes().length; i++) 
          self.AppEntityActionRequestAttributes.pop(self.AppEntityErrorRequestAttributes()[i]); 

        // Now want to update view 

       }); 
     } 
+0

Поделитесь некоторым кодом – Thaadikkaaran

+0

@JaganathanBantheswaran только что обновил код – Utpal

+0

Я не понимаю, что случилось с вашим кодом ?. Вы можете обновить модель в результате обратного вызова – Thaadikkaaran

ответ

0

Вы Шоуда использовать subscribe

// Here's my data model 
 
var ViewModel = function(first, last) { 
 
\t var self = this; 
 
    var ajaxFinished = ko.observable(false); 
 

 
\t $.ajax({ 
 
\t dataType: "json", 
 
\t url: 'https://httpbin.org/get', 
 
\t data: '', 
 
\t success: function() { 
 
    \t ajaxFinished(true); 
 
\t }, 
 
\t fail: function() { 
 
\t \t \t alert('fail'); 
 
\t }, 
 
\t error: function() { 
 
\t \t \t alert('error'); 
 
\t } 
 
\t }); 
 
\t 
 
\t ajaxFinished.subscribe(function() { 
 
\t \t //do something 
 
\t alert('ajax finished'); 
 
\t }); 
 
}; 
 
    
 
ko.applyBindings(new ViewModel()); // This makes Knockout get to work
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>

Live Example

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