uniapp計算屬性的使用


計算屬性,也可稱為動態屬性,在uniapp中有兩種寫法:

第一種:直接返回一個計算的值,該計算屬性為函數類型

        computed:{
            kh_score(){
                var list = this.taskList;
                var scNum = 0;
                for(var i in list){
                    for(var j in list[i].children){
                        var temp =list[i].children[j].target * 1;
                        if(!isNaN(temp)){
                            scNum = scNum + temp;
                        }
                    }
                }
                scNum = scNum == 0 ? "" : scNum;
                return scNum;
            }
        }

在uniapp中,這類寫法可能會出現報錯(HBuilderX內置瀏覽器運行)

 

 

當出現這種錯誤時,應該使用如下寫法。

計算屬性第二種寫法:聲明get和set方法,該計算屬性為對象類型

        computed:{
            kh_score:{
                get(){
                    var list = this.taskList;
                    var scNum = 0;
                    for(var i in list){
                        for(var j in list[i].children){
                            var temp =list[i].children[j].target * 1;
                            if(!isNaN(temp)){
                                scNum = scNum + temp;
                            }
                        }
                    }
                    scNum = scNum == 0 ? "" : scNum;
                    return scNum;
                },
                set(v){}
            }
        }

 

使用場景中的小記:

  計算屬性中大多情況依賴於表單輸入值去計算

  限制表單輸入數據合法值,防止鍵盤敲擊過快:在input組件的@input方法里,使用定時器短時間再次更新值即可。

  例如如下寫法

            //校驗平時分
            checkRegularGrade(e){
                var psc = e.detail.value * 1;
                if(isNaN(psc)){
                    _self.ps_score = "";
                    _self.$uniApi.tipMsg("不是數字");
                }
                
                if(psc > 100){
                    _self.ps_score = 100;
                    setTimeout(function(){_self.ps_score = 100;},100)
                    _self.$uniApi.tipMsg("超出滿分值");
                }
            }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM