私にも同様の問題がありました。私は、backbone.jsのelおよび$ el参照の使用に似た解決策を思いつきます。あなたのViewModelで
:HTMLで
var myViewModel = function(){
var self = this;
//html element
self.el = ko.observable();
//jquery wrapped version
self.$el = ko.observable();
}
(例えば、リストの要素のための):bindingHandlersで
<!-- 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>
(INITに可能なすべての引数を示す):
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の操作についてお礼をありがとう。私は特定の行にオートコンプリートを使用しているので、私はコを介してそれを行うことはできないと思います。大きな解決策 –
は、オートコンプリートパダワンのカスタムバインディングを使用します。 :私は3ヶ月後にkoと分かち合って学んだことの1つ:jquery/jquery ui stuffでカスタムバインディングを使用します。 –
私は年齢を重ねてノックアウトをしてきましたが、イベントのパラメータはわかりませんでした。ありがとう –