关于 v-if="pullDown"

关于 v-if="pullDown"

请老师看看我的思路是否有问题:

问题 一: 为什么 使用 v-if="pullDown" 就可以下拉更新?

原因 :

  1. base/scroll/index.vue -> 首先,我们要搞清楚的是,v-if="pullDown"的布尔值 是从父组件传入,在未传入时,可以先暂时给他一个布尔值 false,而这个默认布尔值设置在 props 中。

  2. pages/home/index.vue -> home 是 scroll 的父组件,并在注册的组件中用 v-bind 要想scroll传入的值(v-bind:pullDown="pullDown")

  3. pages/home/index.vue -> 当父组件的子组件 scroll 启动时,就将 父组件 pullDown 的默认值回传给 子组件 scroll

问题 二 :如何知道 父组件home已经scroll启动下拉功能?

原因 :

  1.  pages/home/index.vue -> 我们在 <me-scroll> 中 绑定(v-on)了一个 pull-down 事件,而pull-down事件要触发,需要先启动 pullToRefresh 方法。

  2. pages/home/index.vue -> pullToRefresh 方法是 this.$refs.slider.update().then(end); ,这句话的意思:使用dom中ref为slider的元素,用$refs 来操作 slider 元素,使用 slider 中的 update 方法

  3. pages/home/slider.vue -> update 方法 中 所返回的是 promise 实例,将成功的数据返回给 pages/home/index.vue 的  pullToRefresh 方法。http://img1.sycdn.imooc.com//climg/5d5d78150001f52f09720418.jpg

    (疑问:this.$refs.sliderxx.update().then(endxxx);  请问老师,这句话最后所呈现的是布尔值吗?还是什么?)

  4. 因为 <me-scroll> 所绑定的 pull-down 事件 启动, 所以 父组件 v-bind:pullDown="pullDown" 才能 子组件 scroll

请问老师这样对吗?



正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,1、end是调用pullToRefresh传递过来的参数。

http://img1.sycdn.imooc.com//climg/5d5e80090001584105660221.jpg

http://img1.sycdn.imooc.com//climg/5d5e80890001d40d06620117.jpg

2、传递的是 this.pullUpEnd这个函数哦。所以是可以调用的。

http://img1.sycdn.imooc.com//climg/5d5e811900017e2006040073.jpg

http://img1.sycdn.imooc.com//climg/5d5e812d00019c9f07150334.jpg

3、pullToloadMore这个里面也是参数end,不过只是参数名相同,调用的时候,传递的参数不是同一个,可以参考上面的步骤找一下这个参数哦。

4、不是简写哦,就是个参数,而这个表示的是函数,可以理解为是上面说到的函数哦。

祝学习愉快!

  • 慕小庄 提问者 #1
    90%理解!谢谢老师!
    2019-08-22 23:07:34
好帮手慕糖 2019-08-22 14:39:08

同学你好,问题一的理解没有问题哦。不过这里也不是父级中的默认值,而是父组件若是传递了就表示为true哦。这里直接写一个pullDown属于简写形式哦。

问题二中的问题,

1、这里就是调用了这个方法,并不是布尔值哦。

2、pullDown与pull-down是没有关系的。后面这个是事件,前面的pullDown是一个数据(布尔值的变量),在v-if这里接收。控制如下这个loading是否显示哦。

http://img1.sycdn.imooc.com/climg/5d5e386b0001f6c808490121.jpg

希望能帮助到你,欢迎采纳。

祝学习愉快!

  • 提问者 慕小庄 #1
    请问老师: 关于 this.$refs.slider.update().then(end); 中的 .then(end); , 为什么返回promise实例之后将 end 传入.then()就可以执行 end ? end不是pullToloadMore的参数吗? 为什么最后却变成了 end() 方法? 跪求老师解惑,谢谢您。
    2019-08-22 15:26:22
  • 提问者 慕小庄 #2
    2- 请问老师: 关于 this.$refs.slider.update().then(end); 中的 .then(end); ,不简写的写法是不是: then( end => end() ); ,是这样吗?
    2019-08-22 15:57:02
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师