2

中數據標記爲Picker的問題我需要顯示來自數據庫的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文件中,我發現了以下錯誤,

遺漏的類型錯誤:未定義 enter image description here

回答

2

INDEX.XML無法讀取屬性「_transform」

<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,你的第一個做法是非常聰明的。儘管如此,我試圖檢索使用數據綁定的選擇器中選擇的項目的ID。我試過,但沒有工作:($ picker.getSelectedRow(0).ID) '警報;' 請幫我 – 2015-09-10 21:34:48

+0

嗨@jdjuan我不鈦工作了,所以我可以幫你對不起。 – 0101 2015-09-12 10:39:13