Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在余烬中书写把手_Javascript_Ember.js - Fatal编程技术网

Javascript 在余烬中书写把手

Javascript 在余烬中书写把手,javascript,ember.js,Javascript,Ember.js,我有一个多语言的小应用程序。应用程序的文本来自服务器。文本可以使用不同的语言。现在让我们继续讲瑞典语和英语。用户可以在语言之间切换。我试图做的是当应用程序加载时,获取两种语言的文本并将其存储在Ember中的模型中 然后,我试图写一个车把助手,它将允许我在两种语言之间切换。例如,我从服务器获取的数据就是这种形式的 langData: { sv_SE: { start_page: "..." }, en_US: { start_page: "..." } 我的模型是language

我有一个多语言的小应用程序。应用程序的文本来自服务器。文本可以使用不同的语言。现在让我们继续讲瑞典语和英语。用户可以在语言之间切换。我试图做的是当应用程序加载时,获取两种语言的文本并将其存储在Ember中的模型中

然后,我试图写一个车把助手,它将允许我在两种语言之间切换。例如,我从服务器获取的数据就是这种形式的

langData: {
 sv_SE: {
  start_page: "..."
 },
 en_US: {
  start_page: "..."
 }
我的模型是language.js,如下所示

App.Language = DS.Model.extend({
    language: DS.attr('string'),
    start_page: DS.attr('string'),
});
Ember.Handlebars.helper('__', function(key, lang, options) {
   // get the text specified for the language. A function which will check the language model and
   // fetch data for the particular key from it
});
{{__ start_page en_US}}
在我的手柄栏里,我正试图做这样的事情

App.Language = DS.Model.extend({
    language: DS.attr('string'),
    start_page: DS.attr('string'),
});
Ember.Handlebars.helper('__', function(key, lang, options) {
   // get the text specified for the language. A function which will check the language model and
   // fetch data for the particular key from it
});
{{__ start_page en_US}}
我是这样称呼把手吧的

App.Language = DS.Model.extend({
    language: DS.attr('string'),
    start_page: DS.attr('string'),
});
Ember.Handlebars.helper('__', function(key, lang, options) {
   // get the text specified for the language. A function which will check the language model and
   // fetch data for the particular key from it
});
{{__ start_page en_US}}
我所想的是,这将返回我的英文起始页文本


这条路对吗?如果不是,正确的方法是什么?此外,我将有不同的文本字符串,将在不同的hbs文件中使用

我成功地使用了一个项目。它为您提供了一个将您的翻译置于模型之外的位置。然后根据cookie或用户模型上的设置加载当前语言。切换到另一种语言确实需要重新加载整个页面,但您可以在不重新加载的情况下使其正常工作。

为什么不将语言模型设置为控制器?如果你切换语言模型,模板会自动更新。是的,但我有不同的模板,每个模板都有不同的文本。因此,对于这种方式,我必须为每个模板设置不同的模型。我试图写一个模型,将可访问的每一个模板。这将解决你的需要吗?这里我从基本控制器扩展。如果我有不同的模板,这会起作用吗?假设我有另一个名为foo的模板,在foo中,我需要一个位于lang数组中的foo_消息。这样行吗?那么,我应该从基本控制器继承所有控制器吗?它应该可以工作,因为数据在控制器中,并且所有模板都可以访问控制器中的数据。为此,您应该使用公共控制器(BaseController)。您还可以将与语言相关的内容分离到mixin,并将其与任何控制器一起使用。