2015-10-30 1 views
0

Я работаю с модулем node-native-db-models. У меня 3 строки в моей модели базы данных. => (title | privateid | action)React Native Listview из db-моделей?

Я теряю 2 дня для этой тренировки. Я хочу перечислить все записи из базы данных. Что не так?

var Download = React.createClass({ 
    getInitialState: function() { 
     return { 
     dataSource: new ListView.DataSource({ 
      rowHasChanged: (row1, row2) => row1 !== row2, 
     }) 
     }; 
    }, 

    componentDidMount: function() { 
     this.fetchData(); 
    }, 

    fetchData: function() { 
     DB.downloads.get_all(function(result) { 
     var data = []; 
     for(var i = 1; i <= result.totalrows; i++) { 
      console.log(result.rows[i]); 
      data[i-1] = result.rows[i]; 
      this.setState({ 
      dataSource: dataSource.cloneWithRows(result.rows[i]), 
      loaded:false, 
      }) 
     } 

     }); 

    }, 
    render: function() { 
     return (
     <ListView 
     dataSource={this.state.dataSource} 
     renderRow={this.renderTrack} 
     style={styles.listView}/> 
    ); 
    }, 
    renderTrack: function (track) { 
     return (
     <View> 
      <Text>{track.title}</Text> 
     </View> 
    ); 
    } 
    }); 
+0

Может быть, вы могли бы дать нам больше идеи, где она ушла на юг. Получаете ли вы что-нибудь из «DB.downloads.get_all» (функция (результат) »? Что произойдет, если вы выполните console.log (результат)? Я думаю, что это ... dataSource.cloneWithRows (result.rows [i]) должен быть таким ... 'dataSource.cloneWithRows (data)' и то, как вы строите массив данных, тоже выглядит нечетным. По крайней мере, это не должно быть 'data.push (results. row [i]) '? Это предполагает, что' console.log (result.rows [i]); 'возвращает объект. Надеюсь, что это поможет, но больше информации действительно поможет мне помочь –

+0

@Chris, console.log (result) работает хорошо. console.log (data) и console.log (result.rows [i]) работают хорошо в функции «для», но setState не работает в функции «для». когда я делаю внешний «для», его возвращающий «undefineded»: | –

+0

Кажется, что сейчас это происходит много. Посмотрите, поможет ли это вам ... http://stackoverflow.com/questions/33426760/react-native-listview-not-updating-on-data-change/33428564?noredirect=1#comment54667379_33428564 –

ответ

0

ли это ...

fetchData: function() { 
    DB.downloads.get_all(function(result) { 
    var data = []; 
    for(var i = 1; i <= result.totalrows; i++) { 
     data.push(result.rows[i]); 
    } 
    // Outside of the loop, apply the data 
     this.setState({ 
     dataSource: dataSource.cloneWithRows(data), 
     loaded:false, 
     }) 
    }); 

},