2012-07-17 28 views
14

Ben değeri gözlemlenebilir nakavt bağlı bir öznitelik sahip bir öğe vardır: eleman yükleri Ben değeri içeren gözlemlenebilir istiyorumBaşlatma Nakavt

<text transform='matrix(1 0 0 1 1 1)' data-bind='attr:{transform:textTransform}'></text>

<text data-bind='attr:{transform:textTransform}'></text>

mümkün t: ancak bunun yerine tanımlanmamış yükler ve öznitelik alltogether dom elemanı çıkarılır, dom elemanında tanımlanan o dom elemanı niteliğinden gözlenebilir bir nakavt değerini ilklendirin ve dom elemanı özniteliğinin değerini de devam ettirin mi?

GÜNCELLEME: http://jsfiddle.net/5Z2SC/10/

cevap

19

Diğer bir seçenek, özel bir bağlayıcı kullanmak olmalı ve içinde elemanın geçerli değerini toplamak istiyoruz ... varsayılan saklayabilir özel bağlayıcı yazmaktır init işlevi. Bu benim görüşüme göre çok daha fazla yeniden kullanılabilir. Eğer bu Dönüşüm özelliği ile şey yapıyor olması gerektiğinden Tabii

ko.bindingHandlers.transform = { 
    init: function(element, valueAccessor) { 
     valueAccessor()(element.getAttribute('transform')); 
    }, 
    update: function(element, valueAccessor) { 
     var value = valueAccessor(); 
     element.setAttribute('transform', ko.utils.unwrapObservable(value)) 
    } 
}; 

, senin, daha karmaşık olacaktır. Bu mantık muhtemelen update bölümüne gitmek isteyecektir.

5

veri bağlama özellikler, ko.applyBindings arayana kadar ayrıştırıldı değil(). Dolayısıyla, eğer öznitelik verisini öğelerinizden ayırmanız gerekiyorsa, bunu böyle yapabilirsiniz.

function MyModel(){ 
    this.textTransform = ko.observable($('#myElement').attr('transform')); 
} 

ko.applyBindings(new MyModel()); 

temelde, sen özelliğinin değerini kapma ve gözlemlenebilir başlangıçtaki değeri olarak ayarlıyorsunuz. data-bind niteliklerinin bir şablon olması amaçlanmıştır, bu nedenle ViewModel'inizde başlangıç ​​veya varsayılan değerler belirtilmelidir.

Diğer seçenek gözlemlenebilir döner boş ise, bu

+0

Teşekkürler, ancak özel bağlama işleyicisine gittim. Başlangıçtaki gözlemlenebilirler için sabit kodlanmış varsayılan değerler, eleman niteliğinin değeri, hangisinin yüklü olduğuna bağlı olarak farklı olacağından, bu durumda aradığım şey değildir. – KodeKreachor