我正在研究 Durandal SPA,并且设置了一些视图和视图模型。我不清楚我应该如何在客户端创建“模型”对象。例如,假设我想定义和创建“Person”模型对象。
我的应用程序中的其他所有内容都定义为 AMD 风格。这允许 Durandal/RequireJS 自动加载它需要的文件。
所以,我的第一个想法是我可以在 models/person.js 文件中定义我的“Person”模型类型,如下所示:
define(function () {
var id = ko.observable(0);
var firstname = ko.observable('');
var lastname = ko.observable('');
return = {
id: id,
firstname: firstname,
lastname: lastname,
};
});
但是,我认为这是不对的,因为从这里我认为没有一种方法可以实际创建单个“Person”对象。例如,假设我想创建两个“Person”对象。Durandal/RequireJS 将愉快地加载到我的“Person”模块中,但它只是一个对象——我可能想要创建另一个“Person”类型的实例,或者另外五个实例,等等。
这样做的适当方法是什么?感谢您帮助消除我的困惑!
更新:我收到了一些回复,解释了一些方法来做到这一点。我认为我的困惑源于“模块”不是“类型”或“类”这一事实。它更像是一个单例对象。所以如果你想定义一个类型,并把它放在一个模块中,你需要创建一个模块,本质上就是一个工厂。
那正确吗?
在这种情况下,工厂是有意义的。但是,我有一个明确的问题:这是在 Durandal/RequireJS/AMD 风格的 JavaScript 应用程序中定义模型类型的公认方法吗?我敢肯定我不是第一个遇到这个问题的人。我想知道它以前是如何解决的,并且(尤其是)AMD 世界是否有关于如何定义可重用类型的公认约定。