sencha touch2的itemTpl模板中自动生成img时遇到的无法传递src进去的问题。

'<tpl if="scriptImagesStr != \'\' && localStorage[scriptItemId] != \'true\' && xindex &lt; xcount && xindex &gt; 1">'+
    '<td> <p>{scriptContent}</p>
        <img alt="images" src="#" style="width:50px;height:50px;"     onTouchstart="showPicture(\'{scriptImagesStr}\',\'{scriptContent}\')"  onerror="getUrl(\'{scriptImagesStr}\')" /></td>'+
'</tpl>'        

 

    最近使用sencha touch2 的时候,动态生成的dataView中的itemTpl的模板中,需要动态生成图片img,并传递图片url地址进去

其中tpl是xtemplate,其中的localStorage是html5的cookie升级版。scriptImagesStr是保存图片url的参数。xcount与xindex是tpl中的参数。

 xindex  :如果你在一个循环的模板里面,这个值表示你当前所在的“第几次”循环(从 1 开始)。

 xcount  :如果你在一个循环的模板里面,这个值表示你正在迭代的数组的总长度。

    这个网址上有一些讲解xtemplate的知识:http://evanwukong.blog.163.com/blog/static/134836495201032032447101/.

   这边的secriptImagesStr其中可能包含的是多张图片,目前以我的能力还是不了解怎么直接传进src中去,所以网上查询以后,我这边是用了

    

src="#"  onerror="getUrl(\'{scriptImagesStr}\')"

其中src为#号,所以获取url的时候会出错,然后就会执行onerror中的getUrl函数。

function getUrl(){
    var urls=arguments[0];
    var url=urls.split(',')[0];
    var img=event.srcElement;
    img.src=url;
    img.onerror=null;

}

其中urls是scriptImagesStr的值,其实就是一个以逗号分隔的字符串,可能包含了多个url地址。事件中都会传递event进去,所以可以通过event.srcElement来获取img对象。 然后img.src=url;设置模板中显示的图片是第一张图片。

    最后一句img.onerror=null;其实是为了预防这边获取的url也有问题,导致图片一直调用onerror,这是很隐藏体验的问题,所以在最后设置img.onerror=null。

 

 

你可能感兴趣的:(sencha touch2的itemTpl模板中自动生成img时遇到的无法传递src进去的问题。)