SORU
17 Temmuz 2012, Salı


Nakavt: bilgisayarlı gözlemlenebilir vs işlevi

Nakavt kullanırken, salt okunur hesaplanan observables yerine daha basit işlevleri kullanmanın avantajı nedir?

Örneğin: aşağıdaki viewmodel yapıcı ve html parçacığını

var ViewModel = function(){
    var self = this;
    self.someProperty = ko.observable("abc");
    self.anotherProperty = ko.observable("xyz");
    self.someComputedProperty = function(){
        return self.someProperty()   self.anotherProperty();
    };    
};

<input data-bind="value: someProperty"/>
<input data-bind="value: anotherProperty"/>
<p data-bind="text: someComputedProperty()"></p>

Her şey burada, bu kadar kullanmalıyım yerine neden bir nedeni var: beklediğiniz gibi çalışmak gibi görünüyor

​var ViewModel = function(){
    var self = this;
    self.someProperty = ko.observable("abc");
    self.anotherProperty = ko.observable("xyz");
    self.someComputedProperty = ko.computed(function(){
        return self.someProperty()   self.anotherProperty();
    });    
};


<input data-bind="value: someProperty"/>
<input data-bind="value: anotherProperty"/>
<p data-bind="text: someComputedProperty"></p>

http://knockoutjs.com/documentation/computedObservables.html belgelere bildiren fark ettim "...açıklayıcı bağlantıları sadece uygulanır hesaplanan observables olarak", yani bana bunları açıkça benim viewmodels kullanmak için gerek yok anlamına mı geliyor?

CEVAP
17 Temmuz 2012, Salı


Eğer hesaplanan senin gözlemlenebilir tek amacı basit bir karşı bağlayıcı yapmak için ise, o zaman bir işlevi kullanarak eşdeğer olacaktır. Bağlantılar bağımlılıkları izlemek için hesaplanan gözlemlenebilir içinde uygulanır, observables herhangi bir değişiklik olduğunda yeniden tetik bağlama.

Burada bir fonksiyon vs. bilgisayarlı observables hakkında dikkate almanız gereken birkaç şey

  • hesaplanan gözlemlenebilir değeri sadece bir bağımlılık güncellenir oluşturulduğunda ve güncelleştirilmesi, önbelleğe alınır. Normal bir işlev için, mantığı her zaman yürütmek gerekir. Eğer birçok şey bu değeri (koleksiyonundaki her öğe üst bir değer karşı bağlayıcı olduğunu söylüyorlar) bağlı ise, o zaman bu mantık, tekrar ve tekrar çalışma almak olacaktır.

  • JavaScript de senin gibi hesaplanan observables kullanabilirsiniz diğer observables. Bu onlara karşı manuel abonelikleri oluşturma ve diğer computeds onları (bir işlevi çağırmadan da bu bağımlılık yaratacak) bağlı anlamına gelir. ko.utils.unwrapObservable gibi KO normal yardımcı yöntemler hakkında genel bir fonksiyon olarak çağırmak için ihtiyacınız olup olmadığını belirlemek için kullanır veya değerini almak için kullanabilirsiniz.

  • eğer sonuçta istediğiniz gemi değerine sunucu, bir bilgisayarlı gözlemlenebilir olacak doğal görünür senin JSON çıkışı sırasında bir değer olduğu sonucu normal çalışmaz sadece kaybolduğunda dönüştürülmüş JSON (sen yapmak gerekir daha fazla iş doldurmak için bir özellik bu işlevi ilk).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ben Schoon

    Ben Schoon

    23 Kasım 2012
  • NYCarspotter

    NYCarspotter

    26 EYLÜL 2011
  • Ralph Phillips

    Ralph Philli

    5 Aralık 2006