在require.js中加载映射插件的标准方法是什么?
下面是我的config.js(require.js配置文件)
require.config({
// Initialize the application with the main application file.
deps: ["app"],
paths:{
// JavaScript folders.
libs: "lib",
plugins: "lib/plugin",
templates: "../templates",
// Libraries.
jquery: "lib/jquery-1.7.2.min",
underscore: "lib/lodash",
text: 'text',
order: 'order',
knockout: "lib/knockout",
knockoutmapping: "lib/plugin/knockout-mapping"
},
shim:{
underscore:{
exports: '_'
},
knockout:{
deps: ["jquery"],
exports: "knockout"
}
}
}
在我的视图模型中
define(['knockout', 'knockoutmapping'], function(ko, mapping) {
}
但是,映射不限于ko.mapping。任何指针/建议将不胜感激。
谢谢, 拉维
答案 0 :(得分:31)
与AMD一起使用时,映射插件会将其功能导出到单独的对象中。因此,该功能将附加到您的mapping
变量,您可以调用它的方法(如mapping.fromJS
)。
如果您的代码依赖于您无法更改的ko.mapping
,则可以选择在代码中将mapping
设置为ko.mapping
。
答案 1 :(得分:7)
您的配置对象可以指定一组依赖项和一个回调,其中可以执行进一步的依赖项配置/操作:
var require = {
paths: {
'knockout': '...',
'mapping': '...'
},
// configuration dependencies
deps: ['knockout', 'mapping'],
// configuration callback
callback: function (ko, mapping) {
ko.mapping = mapping;
}
};
当您在标记中包含脚本时,应在require:
之前加载配置<script src="/scripts/config.js" />
<script src="/scripts/require.js" />
现在,当在模块定义中使用时,Knockout.js将根据需要提供ko.mapping
属性。
define(['knockout'], function (ko) {
// ko.mapping is available
});
请注意,这是一个简略的配置示例。映射插件需要一些填充来指定正确的导出,只是不记得我的头脑是什么。
答案 2 :(得分:4)
在旁注中,因为您使用的是Lo-Dash,所以您不需要包含&#34;下划线&#34;在RequireJS&#34; shim&#34;选项。 Lo-Dash已经获得了AMD的支持。