【发布时间】:2014-08-08 12:08:00
【问题描述】:
我目前正在开发一个应用程序,该应用程序由于功能太多而正在自我扩展。在这里我将提供一些示例代码以供理解。
function test(){
var self = this
/* Define Properties */
self.TaskSection = ko.observable()
.
.
/* Define Get Requrest */
self.GetTasks = function(){
}
.
.
/* Define Post Requrest */
self.PostTask = function(){
}
.
.
/* Define Helper Methods */
self.FormatDate = function(){
}
.
.
/* Define Navigation Methods */
self.HomePage = function(){
}
.
.
/* End */
}
好的。很简单。您可以看到示例模型,但现在很难使用它,因为每个部分都包含许多功能。让我们假设每个部分中有超过 10 个函数。现在我想使用requirejs 管理应用程序。这是我尝试过的。
The Structure
app/
js/
/Collections/ /* For ObservableArrays */
/Events/ /* For Collections and Models */
/Helpers/ /* For Collections and Models */
/Models/ /* Default Properties */
目前我想要的是将模型分成 3 到 4 个部分。
- Collection.js 我只定义了
observableArray() - 我要在其中定义服务器相关函数的Events.js
- Helpers.js,我想在其中定义函数来做一些内部工作。
我怎样才能做到这一点。这是我尝试过的。
define(["knockout"],function (ko) {
function test(){
var self = this
self.TaskList = ko.observanleArray()
}
return new test()
});
define(["knockout","TaskList"],function (ko,TaskList) {
var events = function() {
var self = this
self.AddItem = function (data) {
TaskList.push(TaskModel)
}
self.RemoveItem = function (data) {
TaskList.remove(data)
}
}
return new events()
});
define(["knockout","TaskList"],function (ko,TaskList) {
var helpers = function() {
var self = this
self.SortTaskList = function (data) {
TaskList.sort()
}
}
return new helpers()
});
这里我不知道如何合并它们。 events.js 和 helper.js 中的 TaskList 未定义。我知道我需要将 TaskList 作为参数传递,但我不想使用函数方式。相反,我想使用文字方式将这两个文件合并到 Tasklist.js 视图模型中。
我该怎么做?
【问题讨论】:
-
下一个版本的淘汰赛 3.2 将对此有所帮助。值得一看:blog.stevensanderson.com/2014/06/11/…
-
我知道这不是您明确要求的,但是您是否考虑过使用继承?例如,您可以有一个基本视图模型来定义常见的内部函数或事件,然后让您的主视图模型从它继承?
标签: knockout.js requirejs structure