gpt4 book ai didi

javascript - RequireJS:如何为路径添加前缀

转载 作者:行者123 更新时间:2023-11-27 23:51:07 25 4
gpt4 key购买 nike

我正在使用 Knockout.js V3 和 RequireJS 开发 SPA。

我有这样写的 ko 组件:

define(['text!settings.html'],
function( htmlString) {
'use strict';

function SettingsViewModel(params) {
...
}
// Return component definition
return {
viewModel: SettingsViewModel,
template: htmlString
};
});

现在我想支持本地化,为此我为每种支持的语言复制了 html,例如:

en/settings.html
de/settings.html
se/settings.html

我想让用户更改语言并使用新语言刷新应用程序,是否可以指示 require text 插件将语言前缀添加到所有 html,所以当我写:

text!settings.html

它实际上会加载:

text!de/settings.html

最佳答案

不确定是否可以让文本插件为 url 添加前缀。您可以做的是创建自定义模板加载器:

var templateFromLanguageUrlLoader = {
loadTemplate: function(name, templateConfig, callback) {
if (templateConfig.languageUrl) {
// Language from config or default language
var lang = templateConfig.lang || 'de';
var fullUrl = lang + '/' + templateConfig.languageUrl;
$.get(fullUrl, function(markupString) {
ko.components.defaultLoader.loadTemplate(name, markupString, callback);
});
} else {
// Unrecognized config format. Let another loader handle it.
callback(null);
}
}
};

// Register it
ko.components.loaders.unshift(templateFromLanguageUrlLoader );

然后你的组件看起来像这样:

define([],
function() {
'use strict';

function SettingsViewModel(params) {
...
}
// Return component definition
return {
viewModel: SettingsViewModel,
template: {
languageUrl: 'settings.html',
language: 'nl' // overwrite default
}
};
});

关于javascript - RequireJS:如何为路径添加前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27248043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com