我有一个具有可观察属性的可构造对象
function Item() { this.prop = ko.observable() }
我的视图模型创建了Item
的实例var instance = ko.observable(new Item())
我不应该将实例包装在ViewModel上的observable中吗?如果我不包装" item"在可观察的情况下,该组件根本不起作用。
var instance = new Item()
我将该实例作为参数传递给组件。
<component params="item: item"></component>
我无法弄清楚如何从组件模板绑定到实例的可观察属性。当badge.disabled observable发生更改时,禁用的类不会更改。
template: '<img class="ui image" src="http://fakeimg.pl/300/" data-bind="css: { disabled: item().disabled }" >'
这是完整的例子。
https://gist.github.com/guyjacks/2b4c18fe7f4f7bf9b34059e9019d0918
非常感谢任何帮助。谢谢。
答案 0 :(得分:1)
您只需要修改一些型号代码
ko.components.register('badge-button', {
viewModel: function(params) {
var self = this;
self.badge = params.badge();
self.open = function() {
self.badge.toggleHas();
self.badge.toggleActive();
}
},
template:
'<img class="ui image" src="http://fakeimg.pl/300/" data-bind="click: open, css: { disabled: badge.disabled }" >'
});