vuejs在计算属性中放了ajax请求后会不停的请求数据?

如果把$.post(){} 这部分代码删除,只打印出一个2,否则无限打印1,2;为什么加了会无限请求吗?


<script>
        new Vue({
            el:"#box",
            data:{
                dataBanner:""
            },
            methods:{
            },
            computed:{
                filteredItems: function () {
                    var _this=this;
                    //如果把$.post这段代码删除就只打印一个2;否则无限打印1,2
                    $.post("json/group-type.json",{},function(result){
                        _this.dataBanner=result;
                        console.log(1);
                    })
                    console.log(2);
                    var arr=[];
                    var len=Math.ceil(_this.dataBanner.length/8);
                    for(var i=0;i<len;i++){
                        arr.push(_this.dataBanner.slice(8*i, 8*(i+1)));
                    }
                    return arr;
                }
            }
        })
</script>
阅读 6.5k
3 个回答

如果你只需要请求一次,那你应该放到created(){}中,computed是属性变化就会变化的。

_this.dataBanner是不是绑定在filteredItems对应的标签中,因为_this.dataBanner的改变导致filteredItems的触发,从而造成死循环

computed计算属性,只要属性发生变化这个方法就会执行一次,
只调用一次的话就写在method 里

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题