Kendo UI - 您可以将视图模型创建为函数吗

Posted

技术标签:

【中文标题】Kendo UI - 您可以将视图模型创建为函数吗【英文标题】:KendoUI - can you create view models as functions 【发布时间】: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 风格?这将允许我创建同一视图模型的多个实例、添加“私有”功能等...

【问题讨论】:

【参考方案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);

【讨论】:

以上是关于Kendo UI - 您可以将视图模型创建为函数吗的主要内容,如果未能解决你的问题,请参考以下文章

Angular Js 的 Kendo UI

如何将模型用作 Kendo UI 网格的数据源?

Kendo UI Web 和 Kendo UI ASP.NET for MVC 之间的区别

Kendo UI Hierarchical datagrid - 如何从详细网格编辑器模板 MVVM 访问根视图模型

Kendo UI - 将参数传递给read()中的JS函数.data()

Kendo UI - 将参数传递给 read().data() 中的 JS 函数