Vue JS过滤器在某些移动设备上不兼容

时间:2019-01-07 10:23:23

标签: javascript vue.js compatibility

我只是在我的Webview应用程序上使用vue js来过滤用户搜索。一切正常,直到我在Samsung SM-G530H上运行我的应用程序为止,我收到一条错误消息,说Uncaught SyntaxError: Unexpected token (,我检查了所有内容是否正确,并且可以在除旧设备之外的其他设备上运行。请如何使其兼容所有设备?

enter image description here

new Vue({
      el: '#SearchVueContenPage',
        data() {
            return {
                q: '',
                total_result: 0,
                searchProduct: null,
                loading: false,
                sort_filter: ``,
                URL: ajax_appserver("public", "_api/searchProduct.php")
            }
        },

        computed: {
            search() {
              if (!this.searchProduct) {
                return []
              }

              if (!this.q) {
                  this.total_result = 0;
                return this.searchProduct.recent.slice(0,4);
              }
              var query = this.q.toLowerCase();
              var searchResult = this.searchProduct.result.filter(row => row.product_name.toLowerCase().includes(query) || row.business_name.toLowerCase().includes(query));
              this.total_result = searchResult.length;
              return searchResult;
            }
        },

        mounted() {
            this.loading = true;
            this.fetchData().then(() => {
             this.loading = false
            });
        },

        methods: {
            sortStatus: function(status) {
                   this.sort_filter = status;
             },

            async fetchData() {

                ajax_fetch(this.URL).then(json => {
                    this.searchProduct = json;
                    Vue.nextTick(function(){
                        //Store object in IndexDb
                    }.bind(this));
                });
            }
      }
});

1 个答案:

答案 0 :(得分:0)

似乎是由于您试图运行使用“方法定义”语法的代码而发生的错误。

Method definitions on MDN

得到错误的原因是因为“方法定义”是JS中相对较新的功能/语法,并非所有浏览器都支持。

解决方案的目的是使用babel将代码预编译到ES5。 如果您使用的是VUE-CLI,则您已经有了webpack,只需配置它即可输出ES5代码。