Вопрос о сеньче - PullRequest
       3

Вопрос о сеньче

1 голос
/ 26 июля 2011

Я полностью переписал свой вопрос, чтобы, надеюсь, лучше отразить то, что я пытаюсь сделать здесь. Ребята, большое спасибо за вашу помощь.

У меня есть файл en.js, который содержит этот код:

Ext.apply(Ext.locale || {}, {
variable:       'great success!'    
});

Вот мой установочный код index.js:

Ext.setup({
tabletStartupScreen: 'tablet_startup.png',
phoneStartupScreen: 'phone_startup.png',
icon: 'icon.png',
glossOnIcon: false,
onReady: function() {
    Ext.locale = {};
    var headID = document.getElementsByTagName("head")[0],
    newScript = document.createElement('script');
    newScript.type = 'text/javascript';
    newScript.src = 'en.js';
    headID.appendChild(newScript);
    loginPanel = new login.Panel();
}
});

login.Panel - это расширение класса панели Sencha с использованием Ext.extend.

Скрипт en.js добавлен в заголовок правильно. У меня его нет в файле index.html, потому что, как только эта проблема будет решена, будет загружено несколько файлов, в зависимости от вывода функции. Вот почему мне нужно добавить скрипт в заголовок в функции onReady, а не в сам файл index.html.

Как только скрипт добавлен, он загружает "variable: 'great success'" в Ext.locale, Тем не менее, моя проблема в настоящее время заключается в login.Panel (), который является расширением класса панели Sencha с использованием Ext.extend. В данный момент на панели есть кнопка.

Когда я помещаю это в обработчик кнопки:

console.log(Ext.locale.variable)

возвращает строку «большой успех»,

пока я пытаюсь установить текст кнопки следующим образом:

text:Ext.locale.variable,

Я получаю ошибку

Uncaught TypeError: Cannot read property 'variable' of undefined

Я предполагаю, что у меня есть проблема с областью видимости, так как console.log () и alert () могут одновременно обращаться к Ext.locale, но попытка использовать его для построения формы дает мне неопределенную ошибку.

Любая помощь будет принята с благодарностью.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 29 июля 2011

звучит так, как будто вы определяете Ext.locale из своего скрипта на ранних этапах ... затем позже в onReady вы перезаписываете его, так как Ext.locale = {}

onReady будет выполняться после того, как все остальные ваши скрипты былизагружен.

Почему бы не переместить ваш код инициализации для локали в onReady вместо вашей = {} строки

0 голосов
/ 27 июля 2011

Это добавит три свойства и их значения к принимающему объекту.

Ext.apply(receivingObject, {
        property1: 'value1',
        property2: 'value2',
        property3: 'value3'
});

Вот также документация Sencha по методу Ext.apply: http://dev.sencha.com/deploy/touch/docs/source/Ext.html#method-Ext-apply

Что касается доступасвойство isReady, вы можете сделать что-то вроде if(someExtObj.isReady), но вас может заинтересовать использование метода onReady ...

Ext.setup({
    onReady: function() {
        // your setup code
    }
});
...