显示传入数据流 - 无法访问未定义的属性

时间:2017-12-16 18:37:58

标签: javascript onsen-ui

修改

这是我的请求的日志

$("#search_button").click(function(){
        var search = document.getElementById('search_text').value;
        $.post('http://127.0.0.1:5000/search', {search_text: search, num_results: 2}, function(data, textStatus, xhr) {

            console.log(data);

        });
    }); 

enter image description here

背景

我从我的服务器获取一些数据并尝试使用Onsen UI框架的无限列表在我的页面上显示它但我收到cannot access property 'text' of undefined错误。我确实使用console.log(data)看到数据,所以我希望请求没有问题。如果有人能解释我在这里做错了什么,我真的很感激?谢谢

此作品

我在获取数据之前尝试了一个基本的例子

ons.ready(function() {
  var data = [{"text":"Title 1"}, {"text":"Title 2"}]
  var infiniteList = document.getElementById('infinite-list');

  infiniteList.delegate = {
    createItemContent: function(i) {
      return ons.createElement(`<ons-list-item>
                                    <p style="color:DodgerBlue;">`+data[i].text+`</p>
                                    <img style="width:100%;" src="http://images.all-free-download.com/images/graphiclarge/beautiful_scenery_04_hd_pictures_166258.jpg"/>
                                </ons-list-item>`);
    },
    countItems: function() {
      return data.length;
    }
  };

  infiniteList.refresh();
});

enter image description here

这不起作用

 ons.ready(function(){

    $("#test_button").click(function(){

        $.post('http://127.0.0.1:5000/search', {search_text: 'car', num_results: 2}, function(data, textStatus, xhr) {

            /*after success */

            var infiniteList = document.getElementById('infinite-list');

            infiniteList.delegate = {
            createItemContent: function(i) {
              return ons.createElement(`<ons-list-item>
                                            <p style="color:DodgerBlue;">`+data[i]+`</p>
                                            <img style="width:100%;" src="http://images.all-free-download.com/images/graphiclarge/beautiful_scenery_04_hd_pictures_166258.jpg"/>
                                        </ons-list-item>`);
            },
            countItems: function() {
              return 2;
            }
          };

          infiniteList.refresh();

        });
    });
  });

enter image description here

1 个答案:

答案 0 :(得分:1)

&#39;数据&#39;仅限于可见的功能;它也需要在你使用它的地方得到认可。

使用在两个函数之外声明的另一个变量。

    var dataUse = [];//----------declare here so it is visible in every scope
     ons.ready(function(){

        $("#test_button").click(function(){

            $.post('http://127.0.0.1:5000/search', {search_text: 'car', num_results: 2}, function(data, textStatus, xhr) {

                /*after success */
                dataUse = data;
                var infiniteList = document.getElementById('infinite-list');

                infiniteList.delegate = {
                createItemContent: function(i) {
                  return ons.createElement(`<ons-list-item>
                                                <p style="color:DodgerBlue;">`+dataUse[i]+`</p>
                                                <img style="width:100%;" src="http://images.all-free-download.com/images/graphiclarge/beautiful_scenery_04_hd_pictures_166258.jpg"/>
                                            </ons-list-item>`);
                },
                countItems: function() {
                  return 2;
                }
              };

              infiniteList.refresh();

            });
        });
      });