为什么不使用简单的jquery事件而不是kendo window.observable?

为什么不使用简单的jquery事件而不是kendo window.observable?,jquery,mobile,kendo-ui,telerik,Jquery,Mobile,Kendo Ui,Telerik,我一直在学习创建图库的mobilegap剑道教程,它告诉我通过kendo.observable 具体来说,有一个简单的照片列表视图,代码应该是这样的 window.listview = kendo.observable({ addImage: function() { ...do stuff... } }); 然后在按钮上添加此属性data bind=“click:addImage” 好的,这样行。但我绝对不明白为什么这是必要的,因为我可以这么做 $("button").cli

我一直在学习创建图库的mobilegap剑道教程,它告诉我通过
kendo.observable

具体来说,有一个简单的照片列表视图,代码应该是这样的

window.listview = kendo.observable({
  addImage: function() {
    ...do stuff...
  }
});
然后在按钮上添加此属性
data bind=“click:addImage”

好的,这样行。但我绝对不明白为什么这是必要的,因为我可以这么做

$("button").click(function(){
  ...do stuff...
}
为什么建议通过kendo.observable获取事件?为什么它甚至需要分配给window.listview

如果我有一个通用应用程序,而不是照片列表视图,该怎么办


我忽略了这里的要点

在您的具体示例中,除了一致性之外,实际上没有什么好的理由使用一个而不是另一个。但是,我可以想到一些好的情况,剑道的绑定事件优于jQuery:

  • 绑定按钮通常是上下文感知的。如果您的按钮绑定到集合中的特定项,则单击时,数据绑定函数将传递该项的数据。类似于添加到listview中每个项目的删除按钮:
  • Exmaple:

    var viewModel = kendo.observable({
        // vm stuff...
        DeleteMe: function(e) {
            this.someDataSource.remove(e.data);
        }
    }
    
    VS

  • 动态生成的项目。在上面的示例中,如果我们向集合中添加了一个新项,则需要再次将事件分配给所有新按钮。但是,在模板中使用数据绑定事件时,在创建新项时会自动创建这些事件

  • 远程数据访问和其他异步操作。如果listview绑定到远程数据源,则在上述jQuery代码运行时,可能不会创建所有带有按钮的项。在分配事件侦听器之前,您需要使用更多的事件(如DataSource change)来等待加载所有数据。同样,模板绑定函数会自动处理此问题

  • 当然,归根结底,这一切都取决于偏好。如果您更习惯使用jQuery,那么一定要使用它。我倾向于选择那些最简洁、可读、无bug的代码。MVVM的东西对我来说也更自然,因为我有C#的背景,但即使这样,我有时也会发现自己将两者混为一谈

    要回答您的其他问题:

    window.listview = something;
    

    var listview = something;
    
    如果你在正确的范围内

    所有MVVM的东西在数据驱动的应用程序中都更有用,而不仅仅是照片查看器

    var listview = something;