2013-05-15 3 views
1

Я использую knockout.js в своем проекте django и имею проблему в методе post в javascript. Я попытался восстановить или повторно инициализировать список, но он не сработал.Как обновить данные без перезагрузки страницы с помощью привязки данных

Например: Я показываю данные таблицы с 10 строками. Я хочу нажать кнопку Я получаю другие данные с 5 строками и хочу перезагрузить эти данные в таблице без перезагрузки страницы.

ли какой-либо один знает решение .. Вот мой код knockout.js, HTML и view.py страницы:

JavaScript:

function makeShowObjectList(model, d_url, no_num, detail_per_page, b, fruit) { 
var showobjectList = ko.observableArray([]); 


$.post(d_url, data, function (response_data) { 
       // here we have applied code to set new data in showobjectList 
       if (!showobjectList.is_ready) 
       { 

        //Here we are trying to relaod the list on the page but did'nt work 
        FViewModel.showobjectList=showobjectList; 
        showobjectList.is_ready = true; 
        showobjectList.onready(); 
        ko.mapping.fromJSshowobjectList, {}, self); } 
       } 
      }, 'json'); 

} 
function fruitFilterItem(n, i) { 
    this.n = n; 
    this.i = i; 
} 
var FViewModel=function(c_data) 
{ 
    var self = this; 
    self.abc= ko.observable(null); 
     this.optionsText = ko.observable(); 
     this.fruitFilter = ko.observableArray([ 
     new fruitFilterItem("Mango", 2), 
     new fruitFilterItem("Banana", 1), 
     new fruitFilterItem("Grapes", 3) 
    ]); 
    this.selectedfruit = ko.observable(); 
    this.VegeFilter = ko.observableArray([ 
     new fruitFilterItem("Tomato", "Tomato"), 
     new fruitFilterItem("Patato", "Patato"), 
     new fruitFilterItem("Onion", "Onion"), 

    ]); 
    this.selectedVege = ko.observable(); 

    self.showtList = makeShowObjectList(BucketViewModel, urls.get_fruit_info, self.fruit_page, self.num_fruit, self.bbq, 

self.selectedfruit()); 
     self.setShowType = function(d, ele) { 
     this.get_updates = function() { 
     ko.mapping.fromJS(searchList(), self);}; 


      self.showtList = makeShowObjectList(BucketViewModel, urls.get_fruit_info, self.fruit_page, self.num_fruit, self.b, self.selectedfruit()); 
     self.showtList(); 


    } 

self.ShowmessageList = function() { 
     return self.showtList; 
    } 


} 

HTML:

<script> 
VarModel = new FViewModel(c_data); 
$(function() { 
     function get_updates() { 
     $.getJSON('/new-lines.json', function(c_data) { 
     var VarModel = ko.mapping.fromJS(choices_data); 

      ko.applyBindings(VarModel); 


      }); 

} ko.applyBindings (VarModel);

</script> 
<body> 
<select id="fruit" name="fruit" style="width:200px;" data-bind = " 
     value: selectedfruit, 
     options:  fruitFilter, 
     optionsText: 'n', 
     optionsValue: 'i', 
     optionsCaption: 'Select a fruit' 
    "> 

     </select> 

     <select style="width:180px;" data-bind = " 
     value: selectedVege, 
     options:  VegeFilter, 
     optionsText: 'n', 
     optionsValue: 'i', 
     optionsCaption: 'Select a Vege' 
    "> 
// здесь мы демонстрируем наши колонны
</body> 

views.py:

def urls.get_fruit_info(request): 

     //we are calculating the page_object here 

     response_object = { 
     'page': page_object, 
     'no_not': FruitRecipient.objects.filter(user=request.member, add_at=None).count() 
     } 
     return HttpResponse(simplejson.dumps(response_object, indent=3)) 

I woul Благодарю, если кто-нибудь может помочь мне в сортировке моей проблемы. Спасибо заранее.

ответ

0

Используйте ko.mapping своего плагина, который вы можете загрузить, он обновляет только наблюдаемый, которые изменились между двумя состояниями, таким образом, только члены, которые были изменены, будут вновь повторно вынесены в представлении

+0

Я скачал knockout.mappings-latest.js (версия 2.0). И затем применили его в свой код. Но я столкнулся с той же проблемой, что и раньше, что я могу получить данные на почте, но я не могу перезагрузить эти данные в таблице. Я обновил свой код выше после использования ko.mappings ... Пожалуйста, помогите мне, куда я иду не так. Если возможно, я был бы рад, если бы кто-то мог исправить мой код ... Спасибо заранее. – aagrawal

+0

http://jsfiddle.net/5QrHv/1 – Anders

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