Как связать Google с переводом в Durundal Shell.js, shell.html?
HTML
<div id="google_translate_element"></div>
скрипт
<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
function googleTranslateElementInit() {
new google.translate.TranslateElement({ pageLanguage: 'en', autoDisplay: false }, 'google_translate_element');
}
Durandal не отображает теги скриптов в представлениях. Чтобы сделать их, вы должны использовать пользовательские привязки нокаута:
ko.bindingHandlers.googleTranslate = {
update: function( element, valueAccessor, allBindingsAccessor, viewModel, bindingContext){
var googleElement = valueAccessor();
$(element).html('<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script> <script>function googleTranslateElementInit() { new google.translate.TranslateElement({ pageLanguage: "en", autoDisplay: false }, " + 'googleElement' + ");}</script>');
}
};
Используйте его в shell.html:
<div id="google_translate_element"></div>
<div data-bind="googleTranslate:'google_translate_element'"></div>
См. Функциональность Durandal Composition: http://durandaljs.com/documentation/Using-Composition/
Пример:
<div>
<div data-bind="compose:'views/google_translate.html'"></div>
</div>
google_translate.html
и запустить функцию внутриcompositionComplete