1

是否可以通过如下所示的数据绑定声明设置showErrorConsole可观察对象?这个炸弹带有“ k.apply is not a function ”。我知道我可以在这里使用内联函数,但这感觉不对,而且打字要多得多。

HTML:

<div data-bind="event: { mouseover: showErrorConsole(true) }" ></div>
<div id="devConsole" data-bind="visible: showErrorConsole">
        <div><button data-bind="click: showErrorConsole(false)">X</button></div>
</div>

视图模型:

AjaxErrorsModel = (function () {
    function Constructor() {
        var self = this;
        self.errors = ko.observableArray();
        self.hasErrors = ko.computed(function () {
            return self.errors().length > 0;
        }, self);
        self.showErrorConsole = ko.observable(false);
    };
    return Constructor;
})();
4

1 回答 1

0

可能有一个巧妙的 KO 技巧可以让您这样做,但最简单的方法是将其添加到您的构造函数中:

self.showErrorConsoleIsFalse = function() {
    self.showErrorConsole(false);
};

接着:

<button data-bind="click: showErrorConsoleIsFalse">

或者,如果您想要 mouseover 事件,这将是相同的想法:

self.showErrorConsoleIsTrue = function() {
    self.showErrorConsole(true);
};

<div data-bind="event: { mouseover: showErrorConsoleIsTrue }" ></div>

编辑

当然,没有什么能阻止您从 jQuery 管理这些事件:

<div class="showConsole" ></div>

$(".showConsole").hover(function() {
    yourViewModel.showErrorConsole(true);
}, function() {
    yourViewMode.showErrorConsole(false);
});
于 2012-06-06T19:38:34.890 回答