【发布时间】:2015-09-04 06:36:24
【问题描述】:
我有一个正在使用 Knockout 开发的应用程序,我正在使用 RequireJs,我想要做的是让某些代码可用于多个不同的页面,而不必将代码放在多个文件中...这样的事情:
function perPageOption(value, display) {
this.value = value;
this.display = display;
}
我的页面中有:
<script data-main="/Scripts/JournalEntriesDetailPage" src="~/Scripts/require.js"></script>
以及脚本(JournalEntriesDetailPage):
require(['Knockout', 'journalEntiresDetailViewModel', './app/JournalModels', 'domReady'], function (ko, viewModel) {
ko.applyBindings(new viewModel());
});
然后在我的“journalEntiresDetailViewModel”中有这个:
//per page options
self.perPageOptions = [new perPageOption(10, 10), new perPageOption(20, 20), new perPageOption(50, 50), new perPageOption(100, 100)];
'./app/JournalModels' 是数组/类所在的位置,当我尝试在尝试“导入”它们的任何页面中使用它们时,它们会出现“未定义”。我很难弄清楚这一点。我已经查看了 requirejs 上多页面应用程序的示例,对于我正在尝试做的事情来说,它们似乎太复杂了。我不明白为什么当我“要求”它时“domready”正在工作,但我的文件不工作。
我也试过了,但没有成功:
define(['Knockout'], function (ko) {
define('EntryType', function () {
function EntryType(data) {
this.id = ko.observable(data.ID);
this.name = ko.observable(data.Name);
this.color = ko.observable(data.Color);
this.journaltypeid = ko.observable(data.JournalTypeID);
}
return new EntryType();
});
});
和
define('EntryType', function () {
return function EntryType(data) {
this.id = ko.observable(data.ID);
this.name = ko.observable(data.Name);
this.color = ko.observable(data.Color);
this.journaltypeid = ko.observable(data.JournalTypeID);
}
});
和
define(['Knockout'], function (ko) {
return {
pagePerOption: function(data) {
this.value = value;
this.display = display;
},
entryType: function(data) {
this.id = ko.observable(data.ID);
this.name = ko.observable(data.Name);
this.color = ko.observable(data.Color);
this.journaltypeid = ko.observable(data.JournalTypeID);
}
}
});
【问题讨论】:
-
我并没有对它们做太多,但你见过Knockout Components吗?我认为他们可能会在这里为您提供帮助。
-
你在导出构造函数吗?
-
我还没有看到,看起来我可以将它用于一些东西,但我需要一个可重复使用的“条目”对象,我可以在任何我想要的地方使用它.
-
我认为
define期待一个返回您想要导出的函数,在这种情况下是您的构造函数。 -
我不需要看整个东西,只是想确保它实际上是用 requirejs 语法编写的,并以这种方式加载它的依赖项。
标签: javascript knockout.js requirejs