关于 vue 的一个基础小问题? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
zooo
V2EX    程序员

关于 vue 的一个基础小问题?

  •  
  •   zooo 2018-07-22 20:23:28 +08:00 3402 次点击
    这是一个创建于 2645 天前的主题,其中的信息可能已经有所发展或是发生改变。
    <td><input type="checkbox" @click="handleChecked(index)" :checked="isChecked(index)"></td>

    methods: {
    isChecked: function(index) {
    return this.list[index].status;
    },
    }


    isChecked(index)函数是如何被驱动执行的?? 是不是当 list 数组发生改变就会执行??
    19 条回复    2018-07-23 10:53:29 +08:00
    zooo
        1
    zooo  
    OP
       2018-07-22 20:28:42 +08:00
    小白不懂,求解答
    zooo
        2
    zooo  
    OP
       2018-07-22 20:36:42 +08:00
    没有人吗?
    WilliamLin
        3
    WilliamLin  
       2018-07-22 20:37:10 +08:00 via Android
    @zooo watch 或 computed 了解下
    qiayue
        4
    qiayue  
    PRO
       2018-07-22 20:43:08 +08:00
    我不懂 vue
    这是一个复选框,选中或者取消选中的时候执行 isChecked
    msputup
        5
    msputup  
       2018-07-22 20:48:33 +08:00
    :checked 其实是 v-bind:checked
    就是进行了动态绑定
    上面写的很清楚了,返回的是这个 VUE 组件列表某一项的 status ( true 或 false )
    你的前面还有一个点击事件 handleChecked(index)。
    应该还有一个事件方法,点击的时候,会改变 status 的值,false->true,true->false.
    msputup
        6
    msputup  
       2018-07-22 20:51:34 +08:00
    上面写错,是 vue 组件数据中列表的某一项。
    dixeran
        7
    dixeran  
       2018-07-22 20:56:19 +08:00 via Android
    isCheck 函数里面 log 一下呗。应该是组件的依赖项改变的时候会重新调用,列表项改变或者 list 改变的时候
    luob
        8
    luob  
       2018-07-22 21:19:37 +08:00
    isChecked 这个函数是不是有问题,它好像啥也没干吧
    zooo
        9
    zooo  
    OP
       2018-07-22 21:21:49 +08:00
    @WilliamLin 知道 computed,这是别人代码中的一部分,没看懂。
    @msputup 谢谢
    大概明白了,点击的时候,先执行前面一个绑定的事件 handleChecked 函数,之后还会执行 isChecked 函数,handleChecked 函数改变状态 status,之后 isChecked 函数获取状态。
    看书上没讲,v-bind:可以绑定到一个函数上,所以以为不可以。。。
    才学,所以不懂,之前基础也不好
    谢谢各位回答。
    luob
        10
    luob  
       2018-07-22 21:26:34 +08:00
    sorry, 看错(逃
    vue 都忘完了
    qiayue
        11
    qiayue  
    PRO
       2018-07-22 21:29:28 +08:00
    果然,我靠猜的回答是错的
    zhzer
        12
    zhzer  
       2018-07-22 21:37:47 +08:00
    其实可以这么写
    :checked="list[index].status"
    noe132
        13
    noe132  
       2018-07-22 22:02:23 +08:00 via Android
    所有渲染访问到了的属性,值的改变都会触发重新渲染,无论是 method,还是 computed,跟踪的方式是访问到了 data 中某个属性定义的 getter。
    VDimos
        14
    VDimos  
       2018-07-22 22:23:53 +08:00 via Android
    input 标签 vue 进行了归一化处理的,实际上是 new
    了一个 Function 对象,然后监听了 input 相关的事件,然后用 call 或者 apply 调用这个函数
    zooo
        15
    zooo  
    OP
       2018-07-22 23:05:43 +08:00
    @noe132
    @VDimos
    谢谢回答
    SergeGao
        16
    SergeGao  
       2018-07-23 00:11:33 +08:00 via Android
    用 computed 确定可以?在 computed 里面是访问不到 this 的
    murmur
        17
    murmur  
       2018-07-23 08:10:23 +08:00
    个人感觉 vue 在处理这种函数绑定的时候绝对比想的要周全
    我在函数绑定里连 eval 这种东西都用过 处理特殊需求
    所以底线还是 vdom diff 毕竟 vdom 渲染一次性能也查不到哪里去 diff 坏了就麻烦了
    Stlin
        18
    Stlin  
       2018-07-23 08:30:16 +08:00
    @SergeGao #16 可以访问,但是不能传参
    leemove
        19
    leemove  
       2018-07-23 10:53:29 +08:00
    可以看看 vue 源码....实际上 vue 是通过 setter 来感知数据变化的,所以即使用 eval 也可以察觉.在渲染的时候触发 getter 来收集依赖.
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2288 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 01:20 PVG 09:20 LAX 18:20 JFK 21:20
    Do have faith in what you're oing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86