knockout.js在数据绑定声明中指定observable

时间:2012-06-06 19:35:28

标签: javascript data-binding mvvm knockout-2.0

是否可以通过如下所示的数据绑定声明设置 showErrorConsole observable?这个炸弹出现了“ k.apply不是一个功能”。我知道我可以在这里使用内联函数,但感觉不对,打字更多。

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;
})();

1 个答案:

答案 0 :(得分:0)

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

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

然后:

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

或者如果你想要鼠标悬停事件,那就是同样的想法:

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);
});