2

Мне нужно отобразить значения Picker из базы данных. Итак, как я могу отображать динамические значения в сборщике.Проблема с данными, поступающими в Picker в титановый сплав

XML код

 <Alloy> 
    <Collection src="UserLanguage"/> 
    <Window class="container" onClose="cleanup"> 

     <Picker class="picker"> 
        <PickerColumn dataCollection="UserLanguage" dataTransform="transformFunction"> 
         <PickerRow title="{LanguageName}"/> 
        </PickerColumn> 
     </Picker> 
     <!--<Label id="label"></Label>--> 
    </Window> 
</Alloy> 

Модель:

 var moment = require('alloy/moment'); 

exports.definition = { 
    config : { 
      "columns": { 
      "id":"text", 
      "LanguageName":"text" 
      }, 
      "adapter": { 
       "type": "sql", 
       "collection_name": "UserLanguage" 
      } 
    }, 

    extendModel: function(Model) {  
     _.extend(Model.prototype, { 

     }); 

     return Model; 
    }, 

    extendCollection: function(Collection) {   
     _.extend(Collection.prototype, { 

     }); 

     return Collection; 
    } 
}; 

Контроллер

var moment = require('alloy/moment'); 
var userlang = Alloy.Collections.UserLanguage; 

var task = Alloy.createModel('UserLanguage', { 
     id : '1', 
     LanguageName : 'English' 
    }); 
task.save(); 

userlang && userlang.fetch(); 

function transformFunction(model) { 
    var transform = model.toJSON(); 
    transform.LanguageName = transform.LanguageName ; 
    return transform; 
} 

$.index.open(); 

function cleanup() { 
    $.destroy(); 
} 

TSS:

".container": { 
    backgroundColor:"black" 
}, 

".picker": { 
    width: '90%', 
    top: '25dp' 
} 

Alloy.js

Alloy.Collections.UserLanguage = Alloy.createCollection('UserLanguage'); 

Как я могу передать выбранные значения в палитре. Данные не являются обязательными, чтобы файл XML, я получаю следующее сообщение об ошибке,

Uncaught TypeError: не могу прочитать свойство '_transform' неопределенной enter image description here

ответ

2

index.xml

<Alloy> 
    <Collection src="UserLanguage"/> 

    <Window> 
     <Picker id="countryPicker" class="picker"> 
     <PickerColumn id="column1" dataCollection="UserLanguage"> 
       <PickerRow title="{LanguageName}"/> 
     </PickerColumn> 
     </Picker> 
    </Window> 
</Alloy> 

index.js

Alloy.Collections.UserLanguage.fetch(); 
$.index.open(); 

Не забудьте позвонить по телефону $.destroy после закрытия окна. См http://docs.appcelerator.com/titanium/latest/#!/guide/Alloy_Data_Binding

Другое решение:

index.xml

<Alloy> 
    <Collection src="UserLanguage"/> 

    <Window> 
     <Picker id="picker"/> 
    </Window> 
</Alloy> 

index.js

var userLanguage = Alloy.Collections.UserLanguage; 

userLanguage.on("reset", function() { 
    var column = Ti.UI.createPickerColumn(); 

    this.each(function(model) { 
     var row = Ti.UI.createPickerRow({ 
     title: model.get("LanguageName"); 
     }); 

     column.addRow(row); 
    }); 

    $.picker.columns = [column]; 
}); 

userLanguage.fetch(); 
$.index.open(); 
+0

Привет @ 0101, ваш первый подход очень умный. Тем не менее я пытаюсь получить идентификатор выделенного элемента в сборщике, который использует привязку данных. Я попытался это, но не получилось: (. $ Picker.getSelectedRow (0) .id) 'предупреждение;' Пожалуйста, помогите мне –

+0

Привет @jdjuan Я не работаю с титаном больше, так что я могу «Не помогите вам пожалеть. – 0101

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

  • Нет связанных вопросов^_^