【问题标题】:KendoUI - can you create view models as functionsKendo UI - 您可以将视图模型创建为函数吗
【发布时间】:2013-03-24 16:07:30
【问题描述】:

使用 Knockout 有几种潜在的视图模型创建模式,一种是使用文字:

var viewModel = {
    firstname: ko.observable("Bob")
};

ko.applyBindings(viewModel );

另一个是使用函数:

var viewModel = function() {
    this.firstname= ko.observable("Bob");
};

ko.applyBindings(new viewModel ());

如本问题所述:

Difference between knockout View Models declared as object literals vs functions

我的偏好一直是使用函数,因为它本质上为您提供了一个“工厂”,允许您创建同一视图模型的多个实例。

对于 KendoUI,我看到的所有示例都使用文字语法:

var viewModel = kendo.observable({
     firstname: "Bob"
});

kendo.bind(document.body, viewModel);

我的问题是,使用 Kendo 是否可以通过函数模拟视图模型创建的 Knockout 风格?这将允许我创建同一视图模型的多个实例、添加“私有”功能等...

【问题讨论】:

    标签: mvvm kendo-ui


    【解决方案1】:

    经过一番思考,我意识到“这当然是可能的!” ...

    ViewModel = function() {
         this.firstname = "Bob";
    
         return kendo.observable(this);
    };
    
    var viewModel = new ViewModel();
    
    kendo.bind(document.body, viewModel);
    

    虽然你必须小心在构造函数中对“this”的引用,因为根据它们的执行时间,它们可能会引用不可观察的对象:

    ViewModel = function() {
         firstname = "Bob";
    
         this.doSomething = function() {
             // here 'this' does not point to an obervable, but 'that' does!
             that.set("forename", "Craig");
         }
    
         var that = kendo.observable(this);
         return that;
    };
    
    var viewModel = new ViewModel();
    
    kendo.bind(document.body, viewModel);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-15
      相关资源
      最近更新 更多