Возможно обновить свойство объекта javascript из другого объекта. - PullRequest
0 голосов
/ 17 апреля 2011

Привет,

Я работал над пользовательским пространством имен в appcelerator, но столкнулся с проблемой обновления глобальных переменных пространства имен из определенных объектов Titanium.

У меня есть оболочка с именем " myObj", а внутри myObj находится еще один объект с именем" globals", который содержит переменные, которые устанавливаются и используются в пространстве имен.

myObj.globals = {
    userBalance: null,
    userAuthenticated: false,
    deviceGeoActive: false
}

создал пользовательскую оболочку для модуля геолокации, и внутри этой оболочки есть стандартная функция Ti.Geolocation.getCurrentPosition (e) и некоторые пользовательские элементы, которые будут использоваться с приложением.

ВнутриTi.Geolocation.getCurrent ... (e) Я проверяю, доступна ли служба определения местоположения на устройстве и была ли она авторизована для приложения.Затем я хочу обновить свойство объекта deviceGeoActive в myObj.

Ti.Geolocation.getCurrent...(e){
    if (e.success){
        myObj.globals.deviceGeoActive = true
    }
}

Таким образом, я смогу проверить, включено ли устройство в любом месте и в любое время.

Почему я считаю, что это не удается (и это предположение, я довольно новичок в javascipt), потому что Ti находится за пределами пространства имен myObj и поэтому не может получить к нему доступ таким образом.

Может кто-нибудь указать мнев правильном направлении?

Спасибо,

Джози

1 Ответ

0 голосов
/ 17 апреля 2011

Спасибо, @Khez, за то, что помогли мне добраться до этой точки!

Единственное решение, которое я могу придумать, - это сделать window.myObj в обоих случаях, чтобы обеспечить надлежащий охват. Дайте мне знать о результате этого - @ khez

Titanium Appcelerator не работает внутри пространства имен окна, но ваше предложение заставило меня задуматься о добавлении myObj к глобальному Ti (или Titanium) Пространство имен.

Итак, в начале у меня было это:

var myObj = {}

Но myObj игнорировался Ti .

Чтобы добавить его в глобальное Titanium пространство имен, я изменил его так:

Ti.myObj = {}
myObj = Ti.myObj;

Таким образом, любые вызовы myObj остаются необязательными для ссылки на Ti.

Это означает, что myObj теперь является дочерним для родительского (глобального) пространства имен Ti.

Еще раз спасибо Khez

...