我有類似的問題。我想出了一個類似於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