如何在自定义knockout扩展器中使用jQuery函数。以下是从自定义扩展程序向已淘汰目标添加类的示例。
ko.extenders.addClass = function(target, option) {
if (option == true)
{
target.subscribe(function(newValue) {
$(this.target).addClass('new_class');
});
}
return target;
}
答案 0 :(得分:1)
将正常dirty-flag与css绑定结合起来。
ko.dirtyFlag = function(root) {
var result = function() {}, // A function will not get serialized to JSON
_initialState = ko.observable(ko.toJSON(root));
result.isDirty = ko.dependentObservable(function() {
return _initialState() !== ko.toJSON(root);
});
result.reset = function() {
_initialState(ko.toJSON(root));
};
return result;
};
function ViewModel() {
// Normal properties
this.someProperty = ko.observable("initial value");
// Dirty-flag for this object.
this.dirtyFlag = ko.dirtyFlag(this);
}
<div data-bind="css: { 'new_class': dirtyFlag.isDirty }"></div>
如果您只想跟踪属性的一个子集,也可以传递一个可观察对象或一组可观察对象。
this.dirtyFlag = ko.dirtyFlag(this.someProperty);