使用Knockout,有一些潜在的视图模型创建模式,一个是使用文字:
var viewModel = {
firstname: ko.observable("Bob")
};
ko.applyBindings(viewModel );
Run Code Online (Sandbox Code Playgroud)
另一种是使用功能:
var viewModel = function() {
this.firstname= ko.observable("Bob");
};
ko.applyBindings(new viewModel ());
Run Code Online (Sandbox Code Playgroud)
详情如下:
我一直喜欢使用函数,因为它实际上为您提供了一个"工厂",允许您创建同一视图模型的多个实例.
使用KendoUI,我看到的所有示例都使用文字语法:
var viewModel = kendo.observable({
firstname: "Bob"
});
kendo.bind(document.body, viewModel);
Run Code Online (Sandbox Code Playgroud)
我的问题是,使用Kendo可以通过函数模拟Knockout风格的视图模型创建吗?这将允许我创建相同视图模型的多个实例,添加"私有"函数等...
经过一番思考,我意识到'当然这是可能的!' ...
ViewModel = function() {
this.firstname = "Bob";
return kendo.observable(this);
};
var viewModel = new ViewModel();
kendo.bind(document.body, viewModel);
Run Code Online (Sandbox Code Playgroud)
虽然你必须要小心在构造函数中对'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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1553 次 |
| 最近记录: |