无法使 Knockout.js' 推荐的 AMD 模块模式工作
Can't make Knockout.js' recommended AMD module pattern to work
我正在尝试使 Knockout 推荐的 AMD 模块模式在示例项目中工作,但未加载模板 (.html) 文件。它由 Require.js 在不同的目录中搜索。我要参考的模式是这样的:
A recommended AMD module pattern
其中viewModel和template是js组件部分返回的
这是我的 Require.js 配置:
require.config({
baseUrl: "js",
paths: {
jquery: "jquery-2.1.4.min",
ko: "knockout-3.3.0",
"jquery.vertmenusc": "plugins/jquery.vertmenusc/jquery.vertmenusc"
},
shim: {
"jquery.vertmenusc": ["jquery"]
}
});
require(['jquery', 'ko', 'jquery.vertmenusc'], function($, ko) {
ko.components.register('vert-menu', {
require: "../templates/vert-menu/vert-menu"
});
ko.applyBindings();
});
这里是组件的js部分(vert-menu.js)。模板只是基本的 HTML:
define(['ko', 'text!./vert-menu.html'], function(ko, template) {
function VertMenuViewModel() {
}
return { viewModel: VertMenuViewModel, template: template };
});
我的目录结构是这样的:
root
+ js
+ plugins
+ jquery.vertmenusc
- jquery.vertmenusc.css
- jquery.vertmenusc.js
- jquery-2.1.4.min.js
- knockout-3.3.0.js
- main.js
- require.min.js
- text.js
+ template
+vert-menu
- vert-menu.html
- vert-menu.js
- index.html
我得到的错误是:
http://localhost:8080/templates/templates/templates/vert-menu/vert-menu.html 404 (Not Found)
为什么 Require.js 查看那个目录?
在您的 require.config
中添加模板路径
...
paths: {
templates: "../templates",
...
然后当你注册组件时使用这个
ko.components.register('vert-menu', {
require: "templates/vert-menu/vert-menu"
});
而不是../templates
我正在尝试使 Knockout 推荐的 AMD 模块模式在示例项目中工作,但未加载模板 (.html) 文件。它由 Require.js 在不同的目录中搜索。我要参考的模式是这样的:
A recommended AMD module pattern
其中viewModel和template是js组件部分返回的
这是我的 Require.js 配置:
require.config({
baseUrl: "js",
paths: {
jquery: "jquery-2.1.4.min",
ko: "knockout-3.3.0",
"jquery.vertmenusc": "plugins/jquery.vertmenusc/jquery.vertmenusc"
},
shim: {
"jquery.vertmenusc": ["jquery"]
}
});
require(['jquery', 'ko', 'jquery.vertmenusc'], function($, ko) {
ko.components.register('vert-menu', {
require: "../templates/vert-menu/vert-menu"
});
ko.applyBindings();
});
这里是组件的js部分(vert-menu.js)。模板只是基本的 HTML:
define(['ko', 'text!./vert-menu.html'], function(ko, template) {
function VertMenuViewModel() {
}
return { viewModel: VertMenuViewModel, template: template };
});
我的目录结构是这样的:
root
+ js
+ plugins
+ jquery.vertmenusc
- jquery.vertmenusc.css
- jquery.vertmenusc.js
- jquery-2.1.4.min.js
- knockout-3.3.0.js
- main.js
- require.min.js
- text.js
+ template
+vert-menu
- vert-menu.html
- vert-menu.js
- index.html
我得到的错误是:
http://localhost:8080/templates/templates/templates/vert-menu/vert-menu.html 404 (Not Found)
为什么 Require.js 查看那个目录?
在您的 require.config
中添加模板路径
...
paths: {
templates: "../templates",
...
然后当你注册组件时使用这个
ko.components.register('vert-menu', {
require: "templates/vert-menu/vert-menu"
});
而不是../templates