我有类似的问题。我想出了一个类似于Backbone.js使用el和$ el引用的解决方案。
在您的视图模型
:
var myViewModel = function(){
var self = this;
//html element
self.el = ko.observable();
//jquery wrapped version
self.$el = ko.observable();
}
在HTML(例如列表元素):
<!-- left side is the name of the handler, right side is name of the observable -->
<li class="myclass" data-bind="el: el, $el: $el"></li>
在bindingHandlers(显示所有可能的参数初始化):
ko.bindingHandlers.el = {
init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
var value = valueAccessor();
//assign value to observable (we specified in html)
value(element);
}
};
ko.bindingHandlers.$el = {
init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
var value = valueAccessor();
//here we first create a jQuery object by using $(myelem)
//before updating observable value
value($(element).first());
}
};
例如,那么你可以使用$ el如:
var myViewModel = function(){
var self = this;
//plain DOM element reference
self.el = ko.observable();
//jquery object reference
self.$el = ko.observable();
self.myFunction = function() {
console.log(self.$el().html());
self.$el().addClass("myCssClass");
}
}
希望这有助于!
非常感谢!这很好用!感谢有关jQuery操作的负责人。我在特定的行上使用了自动完成功能,所以我认为我不能通过ko来完成。伟大的解决方案 – 2012-04-12 16:31:11
使用自动完成padawan的自定义绑定。 :P在与ko开发3个月后学到了一件事:使用jquery/jquery ui东西的自定义绑定。 – 2013-02-19 02:02:41
我曾与淘汰赛的年龄,并没有意识到事件参数 - 辉煌!谢谢 – 2013-08-08 04:05:41