zoukankan      html  css  js  c++  java
  • 微信小程序5

    微信小程序不可以使用js直接控制界面元素.而是通过改变 this.data中的属性,同步到界面

    这个问题可以克服,带来的就是和H5不一样的编码方式.JS中更多的是改变数据的逻辑,而不是获取某个View来改变属性值

    例: 图片的error,加载默认图片

    网页中  <img src="http://www.url/...png" onerror="this.src='默认图片'" />

    微信小程序

    <image src="{{imgurl}}"

    binderror="showDefaultImage"
    data-data_path="dest_country_group.item_list[{{index}}].img"

    >

    showDefaultImage  在BasePageOption中定义

    data-data_path  定义当前图片在数据结构中的路径

    BasePageOptionClass.prototype.showDefaultImage = function (e) {
        var self = this; 
        var defaultImage = getApp().getProp("defaultImage");
      var key = e.currentTarget.dataset.data_path;
      var data ={};
      data[key] = defaultImage
      self.setData(data);
    }

    最终的效果类似

    self.setData({
      "dest_country_group.item_list[2].img" : "默认图片地址"
    });
    注意这种写法在JS中,并不能达到效果,而是setData方法进行了处理,做了key解析
     
    有兴趣可以看下
    // // 解析 key 为 data 内对象的路径字符串 微信解析key的代码,  所有 Object类型只能用 . 
    //数组类型才可以用 [], 否则报 only number 0-9 could inside []
    function parsePath(e) { for (var t = e.length, n = [], i = "", r = 0, o = !1, a = !1, s = 0; s < t; s++) { var c = e[s]; if ("\" === c) s + 1 < t && ("." === e[s + 1] || "[" === e[s + 1] || "]" === e[s + 1]) ? (i += e[s + 1], s++) : i += "\"; else if ("." === c) i && (n.push(i), i = ""); else if ("[" === c) { if (i && (n.push(i), i = ""), 0 === n.length) throw new Error("path can not start with []: " + e); a = !0, o = !1 } else if ("]" === c) { if (!o) throw new Error("must have number in []: " + e); a = !1, n.push(r), r = 0 } else if (a) { if (c < "0" || c > "9") throw new Error("only number 0-9 could inside []: " + e); o = !0, r = 10 * r + c.charCodeAt(0) - 48 } else i += c } if (i && n.push(i), 0 === n.length) throw new Error("path can not be empty"); return n }
     

     
     
  • 相关阅读:
    Python TCP通信网络编程
    利用Python进行文章特征提取(二)
    利用Python进行文章特征提取(一)
    Python解决中文字符的问题
    moment.js
    enquire.js-响应css媒体查询的轻量级javascript库
    Airbnb Javascript 代码规范重要点总结es6
    Jest 学习笔记(一)之matchers
    sql server连接oracle并实现增删改查
    如何配置.Net Core Centos守护进程配置
  • 原文地址:https://www.cnblogs.com/jifsu/p/7851085.html
Copyright © 2011-2022 走看看