2016-09-28 35 views
0

我需要創建一個類自動至極一個JSON的基礎上創建多個Objects(文字&開關對)和Switch應取不同values在觸發onValueChange事件。陣營,原住民 - 開關onValueChange輸入指的是錯誤的領域

問題:如果你看看下面的代碼。功能switchChanged只是提取最後一個輸入field(位置)。這裏的奇怪之處是:以上Text字段都得到了正確的值。 Just at the onValueChange function i get only the last field handed over

我刪除了所有的款式通過

  • JSON來變得更容易讀取如下所示:

module.exports = { 
 
    "reminders": 
 
    { 
 
     "title": "Erinnerungen", 
 
     "description": "Sollten Sie Favoriten gesetzt haben, können Sie uns hier erlauben Sie an die Events zu erinnern.", 
 
     "startvalue": true 
 
    }, 
 
    "noIntro": 
 
    { 
 
     "title": "Introseite", 
 
     "description": "Wenn Sie wollen können Sie die beim ersten Start gezeigte Introseite bei jedem Start anzeigen lassen.", 
 
     "startvalue": true 
 
    }, 
 
    "location": 
 
    { 
 
     "title": "GPS erlauben", 
 
     "description": "Erlauben Sie ihrem Smartphone das GPS für unsere Campuskarte zu benutzen.", 
 
     "startvalue": true 
 
    } 
 
}

  • 類(設置),其中魔術應該發生:

//There i require the above JSON 
 
var settingIndex = require('../../settingIndex'); 
 

 
class Settings extends Component { 
 
    constructor(props) { 
 
     super(); 
 
    } 
 
    
 
    getSettingBox(){ 
 
     var Settings = []; 
 
     var object = {}; 
 

 
     for (var topicKey in settingIndex){ 
 
      var value = SettingStorage.get().filtered('key = "' + topicKey + '"')[0].value; 
 
      var title = settingIndex[topicKey].title; 
 
      var description = settingIndex[topicKey].description; 
 

 
      object=(
 
       <View> 
 
        <View> 
 
         <Text>{title}</Text> 
 
         <Text>{description}</Text> 
 
        </View> 
 
        <Switch 
 
         onTintColor={styleHelper.colors.ACCENT_COLOR} 
 
         onValueChange={(value) => this.switchChanged(topicKey, value)} 
 
         value={value}/> 
 
       </View> 
 
      ); 
 
      Settings.push(object) 
 
     } 
 
     return Settings; 
 
    } 
 

 
    render() { 
 
     var Settings = this.getSettingBox(); 
 
     return(
 
      <View> 
 
       <View> 
 
        {Settings} 
 
       </View> 
 
      </View> 
 
     ); 
 
    } 
 

 
    switchChanged(field, value) { 
 
     console.log("Feld: " + field + "--- Value: " + value); 
 
     var obj = {}; 
 
     obj[field] = value; 
 
     SettingStorage.set({ 
 
      key: field, 
 
      value: value 
 
     }); 
 
     this.setState(obj);   
 
    } 
 
}

  • 進一步的信息:

的SettingStorage是我自己的類在那裏我可以保存和得到的東西/ to Realm

startvalue在應用程序的第一次啓動時設置爲初始值

非常感謝您提前幫助您。

回答

0

好吧問5分鐘後我知道答案。感受了3000小時的絕望之後。

問題:getSettingBox()我改變了for(var topicKey in settingIndex)for(let topicKey in settingIndex)。所以這個問題似乎是變量/ let的生命週期。

我不會關閉這個問題也許有人有同樣的問題,像我這樣的怪胎。

問候

相關問題