2012-09-24 14 views
6

Nakavt yapmak ve basit bir işin ne olması gerektiğini anlamaya çalışmak için yeni biriyim. Highchart grafik verilerini güncellemek için ajax istekleri yapmak için bir tarih aralığı seçiciyi bağlama niyetiyle bir MVC4 .NET uygulaması üzerinde çalışıyorum. Dan Grossman'ın bootstrap temalı tarih seçicisini kullanıyorum ve şu ana kadar çok iyiyim (https://github.com/dangrossman/bootstrap-daterangepicker).Bootstrap daterange seçiciyi bağlamak ve span içeriğini ayrıştırmak için Knockout.js aracını kullanma

Temel hedef, bu jQuery date ranger seçicisinin güncellemelerini güncellediğini ve ardından bu değeri ajax isteği için uygulamanın başka bir bölümüne geçirmek için atlatmayı kullanmaktır.

Çevrimiçi bulabildiğim her şeyi denedim. ValueUpdate: aynı hedefe ulaşmak için boş bırakma içinde bazı jQuery öğelerini kullanarak yayılma süresini değiştirmeden önce ve sonra açıklığın değerini izlemek için bir abone işlevi kullanma tarih seçicisi kullanılır. Görünüşte bu jQuery .change() olay işleyicisini kullanır, ki bu sadece girişler, seçimler ve textareaslarda iyidir.

İşte ben bugüne kadar ne keman var: http://jsfiddle.net/eyygK/9/

herhangi bir yardım ve giriş değerlendirin.

+0

@JaredFarrish Özel bir ciltleme yapmak için gitmem gerektiğinden emin değildim, çünkü yalnızca tek bir yayılma alanında yapılan değişiklikleri gözlemlemeye çalışıyorum. – jmkr

+0

Açıklık için değişiklik olayı yoktur, çünkü aralık güncelleştirmesi normal olarak javascript içinden gerçekleşir. Bu durumda, yayının güncelliğini düzeltmek için viewModel özelliğinizi güncellemeniz gerekir. Ko bağlamaları normalde UI'de doğrudan kullanıcı girişi içindir (tıklama, yazım, gönderme). – guzart

cevap

4

Yeni bir tarih aralığı güncellendiğinde, görünüm modelinizdeki currDateRange özelliğini güncellemeniz yeterlidir. Tarih aralığını güncellediğimde

$('#reportrange').daterangepicker({ 
    ..., 
    function (start, end) { 
     var dateRangeText = start.toString('MM/d/yy') + ' - ' + end.toString('MM/d/yy'); 
     vm.currDateRange(dateRangeText); 
    } 
}); 

Yani, nakavt rapor edecek ve nakavt uygulamaların kullanım yerleri, span güncelleyecektir.

Artık currDateRange'a abone olabilir ve Ajax çağrılarınızı oradan yapabilirsiniz.

self.currDateRange = ko.observable("09/24/12 - 09/24/12"); 
self.currDateRange.subscribe(function(newValue) { 
    $.ajax({...}); 
}); 

Bu şekilde güncelleştirmenin nereden geldiği önemli değil, nakavt herkese bildirimde bulunacaktır.

+0

['Uncaught TypeError: Nesne işlevi ViewModel() {...} işlevi, Chrome Konsolu'nda 'currDateRange' (http://jsfiddle.net/eyygK/12/) yöntemini kullanmıyor, ancak ilk kaydı kaydettiriyor tarih aralığı seçicinin açılması. –

+0

ViewModel örneğinin daterangepicker içinden göründüğünden emin olun. Sadece fark ettim ama sen görünüş modelinin ismini verdin (vm'). Yani viewModel 'yerine (küçük harf v)' vm'yi deneyin. – guzart

+0

http://jsfiddle.net/eyygK/13/ –

İlgili konular