Javascript 如何基于模板中的mouseover/mouseout绑定可见性

Javascript 如何基于模板中的mouseover/mouseout绑定可见性,javascript,knockout.js,Javascript,Knockout.js,我正在尝试根据鼠标事件确定显示或隐藏链接的方法。从JSFIDLE来看,我似乎无法让它工作。这就是我到目前为止所做的: HTML: 我知道随着数据的显示和链接的隐藏,绑定工作正常。但是,当我mouseover或mouseout时,控制台中会出现以下错误: Uncaught TypeError: Object #<Object> has no method 'deleteVisible' viewModel.hideDelete (anonymous function)

我正在尝试根据鼠标事件确定显示或隐藏链接的方法。从JSFIDLE来看,我似乎无法让它工作。这就是我到目前为止所做的:

HTML:

我知道随着数据的显示和链接的隐藏,绑定工作正常。但是,当我mouseover或mouseout时,控制台中会出现以下错误:

Uncaught TypeError: Object #<Object> has no method 'deleteVisible' 
    viewModel.hideDelete
    (anonymous function)
    jQuery.event.dispatch
    elemData.handle
UncaughtTypeError:对象#没有“deleteVisible”方法
viewModel.hideDelete
(匿名函数)
jQuery.event.dispatch
elemData.handle
因此,错误来自viewmodel中的“hideDelete”。知道我做错了什么吗


谢谢

您是否尝试过使用自参考创建视图模型

$(function() {

var data = [ {name: "Bob"}, {name: "Joe"}, {name: "John"} ]; 
function viewModel (){
    var self = this; 
    self.list = ko.observableArray(data);
    self.deleteVisible = ko.observable(false);
    self.addItem = function() {
        self.list.push({name: "Steve"});                       
    };
    self.removeItem = function() {
        self.list.pop();
    };        
    self.showDelete = function() {
        self.deleteVisible(true);
    };        
    self.hideDelete = function() {
        self.deleteVisible(false);
    };        
};
ko.applyBindings(viewModel);    
}))

Uncaught TypeError: Object #<Object> has no method 'deleteVisible' 
    viewModel.hideDelete
    (anonymous function)
    jQuery.event.dispatch
    elemData.handle
$(function() {

var data = [ {name: "Bob"}, {name: "Joe"}, {name: "John"} ]; 
function viewModel (){
    var self = this; 
    self.list = ko.observableArray(data);
    self.deleteVisible = ko.observable(false);
    self.addItem = function() {
        self.list.push({name: "Steve"});                       
    };
    self.removeItem = function() {
        self.list.pop();
    };        
    self.showDelete = function() {
        self.deleteVisible(true);
    };        
    self.hideDelete = function() {
        self.deleteVisible(false);
    };        
};
ko.applyBindings(viewModel);