一点小问题

Vue中Ajax的使用
由于Vue中,data域的变量不能动态声明,所以在调用Ajax时,可以采用两种方法。

  1. 在data中预留接口对象。
    我们可以在data域中将未来需要使用的对象进行定义,赋值为null。
var initComp = new Vue({
            el: '#initValue',
            data: {
                testName: null,
                isAnonymous: null,
                email: null,
                stuClass: null,
                schoolNumber: null,
                name: null
            });

接下来可以在mounted域中进行ajax请求,使用请求之后的结果进行事件处理。

  1. 关于v-if
    语法:

v-if="布尔表达式"

如果该布尔表达式为,该元素显示,否则隐藏

只要是JavaScript中可以返回布尔类型的常量、变量、表达式、函数,均可在其中使用。
需要注意的是,以下三种“特殊对象类型"的返回值,返回的是false

var sb = new Boolean(null);
//Boolean { false }
sb = new Boolean(undefined);
//Boolean { false }

sb = new Boolean(NaN);
//Boolean { false }

还有这两者返回的值,是true

sb = new Boolean(Infinity);
//Boolean { true }

sb = new Boolean(-Infinity);
//Boolean { true }

因此如果调试页面的过程中,出现了奇奇怪怪的bug,(比如某个该出来的组件没有出来),应该检查以下,v-if绑定的变量名是否有错

  1. this指针的作用域问题

在Vue中,所有的选项/生命周期钩子(mounted、activated、updated...)中函数的this上下文都是Vue实例本身,但是这样有可能让人产生误解,并不是所有的情况都是这样的。

        initComp = new Vue({
            el: '#initValue',
            data: {
                datas: null
            },
            mounted: function(){
                    this.datas = {};///注意此处
                    $.ajax({
                            ///...
                            success: function(data){
                                    this.datas.area = data;///注意此处
                                    ///...
                            }
                    })
                }
         });

大家可以看到,在mounted钩子中有两个this,其中一个this我们把data域中的datas初始化为一个空对象,然后使用jQuery调用ajax请求,在success中,我们再次用到了this。

注意!!!这两个this所指的上下文是不一样的!!!
第一个this,指向Vue实例,但是第二个,这里指向的是jQuery中的ajax对象。
所以。。。。。。
就是在ajax中创建了一个临时变量datas,并没有赋值到Vue的data域中。

严格来说,这并不是语法错误或者其他,而是属于一种思维定式,写在这里,也是勉励自己,注重基础。

你可能感兴趣的:(一点小问题)