我有拥有它的价值势必观察到淘汰赛的属性的元素:
<text transform='matrix(1 0 0 1 1 1)' data-bind='attr:{transform:textTransform}'></text>
当元件的负载我想的可观察到包含的DOM元素上定义的值,然而,代替加载为未定义和属性从产品总数的DOM元素删除:
<text data-bind='attr:{transform:textTransform}'></text>
是否有可能初始化淘汰赛从DOM元素属性可观测值和坚持的DOM元素属性的值呢?
更新: http://jsfiddle.net/5Z2SC/10/
另一种选择是使用自定义绑定,并收集在init功能的元件的电流值。 这是更为可重复使用的,在我看来。
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))
}
};
当然,你会更加复杂,因为你必须做与此转换性质的东西。 这种逻辑可能会想在去update
部分。
数据绑定属性不被解析,直到调用ko.applyBindings()。 所以,如果你需要得到属性数据把你的元素,你可以不喜欢这样。
function MyModel(){
this.textTransform = ko.observable($('#myElement').attr('transform'));
}
ko.applyBindings(new MyModel());
基本上,你抓住了属性的值,并将其设置为可观察的初始值。 数据绑定属性意味着是一个模板,所以初始或默认值应该在你的视图模型来指定。
另一种选择是写一个定制绑定,可以存储一个缺省的,如果观察到的返回空...