2015-12-11 3 views
0

У меня есть Js приложение, которое загружает на странице загрузки.

var lang = 'en'; 
    i18n.setLng(lang, function(err, t) { /* loading done */console.log('loaded ' + lang) }); 

    $(function() { 
     Mirador({ 
     "id": "viewer", 
     "layout": "1x1" 
     }); 
    }); 

Однако я хотел, чтобы иметь возможность динамически переключать язык, поэтому добавил небольшой язык переключатель.

Html

<div id="switch">English</div> 
    <div id="viewer"></div> 

JS

$('#switch').click(function(){ 
    if(lang==='de') { 
     lang = 'en'; 
    $("#switch").html("Other"); 
    } else { 
    lang = 'de'; 
    $("#switch").html("English"); 

    } 
    }); 

Но хотя он меняет переменную lang, она не перезагружает приложение mirador. Я понимаю, что хочу перезагрузить страницу, но с новой переменной Im, просто борющейся за правильный синтаксис

+0

Если вы перезагрузите страницу, сделанные вами изменения будут потеряны, потому что вы перезагружаете страницу. –

+0

Ваш вызов Miradir находится внутри функции самозапуска, которая запускается только после того, как вам нужно позвонить ей после каждого изменения языка. – Edward

+0

@ daveNewton да, поэтому я не хотел просто использовать перезагрузку, но просто перезагрузил контент mirador. Думаю, теперь я вижу ошибку моих путей. –

ответ

0

$ (function() {}); это функция готовности документа. Это запускается автоматически, когда документ страницы готов в браузере. Вам не нужно вызывать его внутри любой другой функции. Даже вы можете называть функцию Mirador несколько раз, как вам нужно. В моем примере Mirador вызывается, когда документ готов к состоянию, а также когда пользователь нажимает и меняет язык. Настройки функции Mirador, которые вы можете сделать в соответствии с вашими потребностями

$(function() { 
     Mirador({ 
     "id": "viewer", 
     "layout": "1x1" 
     }); 

$('#switch').click(function(){ 
    if(lang==='de') { 
     lang = 'en'; 
    //reload app page 
    } else { 
    lang = 'de'; 
    $("#switch").html("English"); 
// reload app page 
    } 
    }); 

}); 
+0

Почему один и тот же код дважды вставлял инициализацию Mirador внутри функции и вызывал функцию? – Edward

+0

Я дал вам представление о том, как поток будет работать с функцией готовности документа. Если вам не нужно повторно инициализировать функцию mirador несколько раз, и есть процесс перезагрузки страницы, вы можете заменить код инициализации mirador на функцию щелчка. Я обновил свой код –

+0

Что означает «перезагрузить страницу приложения»? Если вы перезагрузите страницу, все уйдет. –

Смежные вопросы