默认加载数据,能运行,但是出现报错

来源:8-3 开发工具更新、bundle.js 以及 Xcode 环境须知

寒武纪lcm

2016-10-19

之前数据默认是空白的,但是下拉刷新后就显示数据了。如何让数据默认就显示出来呢?

后来想个办法就是让它默认刷新,

在控制器里面加了这句话

 this.doRefresh(this.refresher) ;

数据就可以出来了,但是浏览器里面有报错!错误已经贴在下方!



import { Component } from '@angular/core';

import { LoadingController } from 'ionic-angular';

import { Http, Headers, RequestOptions } from '@angular/http';

import { Toast, ToastController, NavController, NavParams } from 'ionic-angular';

import { InAppBrowser} from 'ionic-native';

import { Platform } from 'ionic-angular';



@Component({

  templateUrl: 'build/pages/toutiao/toutiao.html'

})

export class toutiaoPage {

  public wenzhang;

  public wen;

  public index = 0;

  public page = 0;

  public refresher;

  public arrtype = ["toutiao", "shehui", "guonei", "guoji", "yule", "tiyu", "junshi", "keji", "caijing", "shishang"];



  constructor(public navCtrl: NavController, public params: NavParams, private http: Http, public loadingCtrl: LoadingController, public toastCtrl: ToastController, public platform: Platform) {


      this.doRefresh(this.refresher) ;


  }


  //链接在内置浏览器打开

  openBrowser(url) {

    this.platform.ready().then(() => {

      open(url, "_blank", "location=no");

    });

  }




  qingqiu(type) {

    //默认加载

    let loading = this.loadingCtrl.create({

      spinner: 'circles',

      showBackdrop: false

    });

    if (this.index == 0) {

      loading.present();

    }


    //请求数据

    this.http.get('http://v.juhe.cn/toutiao/index?type=' + type + '&key=321bc43e79c9be1464bdd46a3e5924df').subscribe(

      //请求成功

      data => {

        console.log(data.json().error_code);

        if (data.json().error_code == 0) {


          this.wenzhang = this.wenzhang.concat(data.json().result.data);


          console.log(this.wenzhang);


          if (this.index == 0) {

            setTimeout(() => {

              loading.dismiss();

            }, 0);

          }

          this.index += 1;

          //console.log(this.wenzhang);

        }

      },

      //请求失败

      err => {

        let toast = this.toastCtrl.create({

          message: '无法获取网络信息!',

          duration: 3000,

          position: 'middle'

        });

        toast.present();

        console.log('抱歉,请求失败');

      }

    )

  }



  //下拉刷新数据信息

  doRefresh(refresher) {

    setTimeout(() => {

      this.wenzhang = [];

      this.qingqiu('toutiao');

      refresher.complete();

    }, 1000);

  }


  //上滑加载数据信息

  doInfinite(infiniteScroll) {

    this.page++;

    //console.log(this.arrtype[this.page]);

    this.qingqiu(this.arrtype[this.page]);

    setTimeout(() => {

      infiniteScroll.complete();

    }, 3000);

  }




}



出现以下报错

EXCEPTION: TypeError: Cannot read property 'complete' of undefined

browser_adapter.js:84 EXCEPTION: TypeError: Cannot read property 'complete' of undefinedBrowserDomAdapter.logError @ browser_adapter.js:84BrowserDomAdapter.logGroup @ browser_adapter.js:94ExceptionHandler.call @ exception_handler.js:65(anonymous function) @ application_ref.js:337schedulerFn @ async.js:139SafeSubscriber.__tryOrUnsub @ Subscriber.js:225SafeSubscriber.next @ Subscriber.js:174Subscriber._next @ Subscriber.js:124Subscriber.next @ Subscriber.js:88Subject._finalNext @ Subject.js:128Subject._next @ Subject.js:120Subject.next @ Subject.js:77EventEmitter.emit @ async.js:127onError @ ng_zone.js:124onHandleError @ ng_zone_impl.js:74ZoneDelegate.handleError @ zone.js:327Zone.runTask @ zone.js:259ZoneTask.invoke @ zone.js:423

browser_adapter.js:84 STACKTRACE:BrowserDomAdapter.logError @ browser_adapter.js:84ExceptionHandler.call @ exception_handler.js:67(anonymous function) @ application_ref.js:337schedulerFn @ async.js:139SafeSubscriber.__tryOrUnsub @ Subscriber.js:225SafeSubscriber.next @ Subscriber.js:174Subscriber._next @ Subscriber.js:124Subscriber.next @ Subscriber.js:88Subject._finalNext @ Subject.js:128Subject._next @ Subject.js:120Subject.next @ Subject.js:77EventEmitter.emit @ async.js:127onError @ ng_zone.js:124onHandleError @ ng_zone_impl.js:74ZoneDelegate.handleError @ zone.js:327Zone.runTask @ zone.js:259ZoneTask.invoke @ zone.js:423

browser_adapter.js:84 TypeError: Cannot read property 'complete' of undefined

    at toutiao.ts:85

    at ZoneDelegate.invokeTask (zone.js:356)

    at Object.onInvokeTask (ng_zone_impl.js:44)

    at ZoneDelegate.invokeTask (zone.js:355)

    at Zone.runTask (zone.js:256)

    at ZoneTask.invoke (zone.js:423)BrowserDomAdapter.logError @ browser_adapter.js:84ExceptionHandler.call @ exception_handler.js:68(anonymous function) @ application_ref.js:337schedulerFn @ async.js:139SafeSubscriber.__tryOrUnsub @ Subscriber.js:225SafeSubscriber.next @ Subscriber.js:174Subscriber._next @ Subscriber.js:124Subscriber.next @ Subscriber.js:88Subject._finalNext @ Subject.js:128Subject._next @ Subject.js:120Subject.next @ Subject.js:77EventEmitter.emit @ async.js:127onError @ ng_zone.js:124onHandleError @ ng_zone_impl.js:74ZoneDelegate.handleError @ zone.js:327Zone.runTask @ zone.js:259ZoneTask.invoke @ zone.js:423

toutiao.ts:85 Uncaught TypeError: Cannot read property 'complete' of undefined(anonymous function) @ toutiao.ts:85ZoneDelegate.invokeTask @ zone.js:356onInvokeTask @ ng_zone_impl.js:44ZoneDelegate.invokeTask @ zone.js:355Zone.runTask @ zone.js:256ZoneTask.invoke @ zone.js:423

toutiao.ts:50 0


写回答

1回答

Parry

2016-10-19

请问你的 this.refresher 定义以及赋值在哪里?

0
4
寒武纪lcm
老师别漏了这个问题,默认加载数据的话,如果不调用刷新函数还有别的方法吗?
2016-10-24
共4条回复

Ionic飞速上手的跨平台App开发

以HTML5移动App开发框架Ionic,开发不受平台限制的App

1314 学习 · 640 问题

查看课程