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 - 您可以将视图模型创建为函数吗的主要内容,如果未能解决你的问题,请参考以下文章
Kendo UI Web 和 Kendo UI ASP.NET for MVC 之间的区别
Kendo UI Hierarchical datagrid - 如何从详细网格编辑器模板 MVVM 访问根视图模型