2016-01-20 12 views
6

Bir ruby ​​on rubils uygulamasında veri tablosunun sayfa içi düzenlemesini yapmak için best_in_place kullanıyorum. Yerinde düzenleme çalışmaları, ancak başarısız olan bir köşe durumum var. Satırdaki bir çift öğe (device_name, generic_name) benzersiz olmalıdır. Benzersiz değillerse, sunucu tarafı kodu, bir çift benzersiz 0 ile yapmak için değiştirilen bir generic_name ile bir dizi kümesinden geçer. ekranını güncellemek için aşağıdaki coffeescript'i kullanıyorum.best_in_place, güncelleme sonrasında orijinal değerleri korur

Bu kod çalışır
jQuery -> 
    $('.best_in_place[data-bip-object="full_dpoint"]').bind(
     "ajax:success", (event, d) ->▫ 
      return if ! d? 
      data = JSON.parse(d) 
      if ! data.dpoint? 
       return 
      else 
       item_to_edit = "#best_in_place_full_dpoint_" + data.dpoint.dpoint_id + "_generic_name" 
       $(item_to_edit).text(data.dpoint.generic_name) 
      ) 

, (IE düzgün sunucu tarafından sağlanan yeni jenerik adıyla sayfasını günceller), ancak o zaman 'generic_name' alanda geri tıklarsanız, (düzenleme moduna geçmek için) Varsayılan düzenleme metni, en başta ne olduğuyla ilgili olarak 'u değiştirir (sayfa indirme süresi). Ben aşağıdakilerin tümünü içeren yeni jenerik isim için birçok farklı sayfa öğelerini ayarlama deneyler var:

$(item_to_edit).attr('data-bip-original-content', data.dpoint.generic_name) 
$(item_to_edit).attr('data-bip-value', data.dpoint.generic_name) 
$(item_to_edit).attr('original-value', data.dpoint.generic_name) 
$(item_to_edit).attr('bipValue', data.dpoint.generic_name) 
$(item_to_edit).attr('bipvalue', data.dpoint.generic_name) 

Tüm boşuna. Orijinal değerinin nerede saklanabileceğini bulmaya çalışırken dom içinde dürttüm, ancak bunlardan başka bir şey bulamadım.

Herhangi bir fikrin var mı?

TIA.

Leonard

+0

hızlı soru ... öyle mi bir sayfanın yeniden yüklenmesi durumunda Javascript kodunuzun değiştirdiği değeri gösterir mi, yoksa en iyi şekilde girilen eski alana geri döner mi? – uday

+0

Yeniden yüklendikten sonra, değiştirilen değeri doğru şekilde gösterir. Ayrıca değiştirilen değeri almak için sayfayı yeniden yüklemem gerekmediğini de eklemeliyim, eğer 'düzenle' kutusunun dışına tıklarsam doğru (değiştirilmiş) değerine geri dönüyorum. – Leonard

cevap

0

Deneyin

javascript:

$(document).ready(function() { 
    /* Activating Best In Place */ 
    jQuery(".best_in_place").best_in_place(); 
    var old_value; 
    $(document).on('change', '.not_abort', function (e) { 
     console.log(e.target.value); 
     old_value = e.target.value; 
    }); 
    $(document).on('ajax:error', '.not_abort', function (e) { 
     console.log(e); 
     e.target.innerHTML = old_value; 
     $(e.target).data('bipOriginalContent', old_value); 
    }); 

}) 

görünüm:

değer page..what değişti alır sonra
best_in_place @device_name, :email, class: 'not_abort' 
+0

Çalışmıyor mu ... tekrar dene? – Leonard