Javascript 如何在第一次渲染后通知foreach中的更新项?
我正在尝试创建自定义foreach绑定,但无法正确截获更新事件。此自定义绑定称为“测试” 这是标记Javascript 如何在第一次渲染后通知foreach中的更新项?,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我正在尝试创建自定义foreach绑定,但无法正确截获更新事件。此自定义绑定称为“测试” 这是标记 <ul data-bind='test: collection'> <li> <button data-bind='text: caption, click: $parent.callback'></button> </li> </ul> 这是定制装订 ko.bindingHandlers.t
<ul data-bind='test: collection'>
<li>
<button data-bind='text: caption, click: $parent.callback'></button>
</li>
</ul>
这是定制装订
ko.bindingHandlers.test = {
init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
return ko.bindingHandlers.foreach.init(element, valueAccessor, allBindings, viewModel, bindingContext);
},
update: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
var value = ko.utils.unwrapObservable(valueAccessor());
//console.log(element);
var newValue = function(){
return {
data: value,
afterRender: function(element, index, data) {
if (index.active) {
$(element).css('color', 'green');
}
}
}
}
ko.bindingHandlers.foreach.update(element, newValue, allBindings, viewModel, bindingContext);
}
};
我想在项目的活动标志变为TRUE时更改项目的颜色,但更新回调仅在初始化步骤中调用。如何做到这一点
你的小提琴有一些问题-
.active {
color: green;
}
为什么要在这里定制装订?似乎您希望跟踪
活动的,并在该属性的值更改时进行UI更改。这听起来像是可观测属性的完美候选者。您可以使活动
可见,并使用css
绑定:(或style
绑定)@AndrewWhitaker您是对的。事实上,我已经简化了一个更复杂的场景,所以就拿这个小例子作为一个案例研究吧。谢谢,我的主要问题是#2
.active {
color: green;
}