2618关注8355浏览
我在wxml的input中指定了bindinput属性为'onEdit_typing ',但此时js文件中并没有声明该函数。
原因是我希望在该input需要被show出来时才‘动态’指定。
比如
//.wxml
<view wx:if="{{edit_visible}}">
<input value='{{text}}' bindinput='onEdit_typing' type='text' />
</view>
//.js
showEdit:function(){
this.data.edit_visible = true;
this.onEdit_typing = function(e){
console.log('真正的回调');
}
this.setData(this.data);
console.log(this);
}
我通过调用该方法来让input显示出来,但当我输入时会提示找不到该handler,即提示'onEdit_typing'找不到
但我log this时, 即把page打印出来时却可以看到该方法有被声明了。
我在其它地方用类似的机制都是可以正常运作的,包括针对view的bindtap动态实现,但在input这里却失败了。 我不确定这是不是bug, 如果是,腾讯可否提供一个纪念品给我?
so,我现在的解决办法是老老实实在js中先声明一下该方法(很不情愿这样!!!)
onEdit_typing:function(e){
console.log('占位');
}
就不会有这个提示了,而且仍然会走到我自己‘动态’定义的方法里
测试环境 1模拟器(mac)2小程序真机(android,三星) 均如此
请开发组明查。 谢谢
------------------------------------------
补充
https://github.com/simsir-lin/dialog-wxapp我使用了该dialog组件
<!-- 文本输入 -->
<dialog data-model="edit_visible" visible="{{edit_visible}}" title="{{edit.title}}" bindclose="onEdit_close" bindconfirm="onEdit_confirm" bindopen='onEdit_open'>
<view class='container-v padding_mid-v bg_white'>
<input value='{{edit.text}}' bindinput='onEdit_typing' type='text' class='text-big text-color ' />
<view style='height:1px;background:#a5a5a5;margin-top:1vw ' />
</view>
</dialog>
&
-
至过去的我
2044人对此回答表示赞同
我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多> -
凌云舒语
16人对此回答表示赞同
正常的呢
展开168回复分享发布于 6年前评论(8)
收起评论
-
Aubrey
15人对此回答表示赞同
展开150回复分享发布于 6年前评论(0)
收起评论
-
Carter
3人对此回答表示赞同
自定义组件这里对于动态添加的方法在某些特别的事件触发中有个bug,去原型寻找却没有在当前实例寻找,所以你这里挂在实例上的方法会找不到。预计近期的基础库版本会修复这个问题。
展开31回复分享发布于 6年前评论(1)
收起评论
-
夹生饭 2019-02-22 20:05
辛苦了,这么晚还在查bug
回复
-
-
赵凯歌
2人对此回答表示赞同
麻烦给个相关的代码片段,我们定位下问题
展开21回复分享发布于 6年前评论(1)
收起评论
-
周欣 2019-02-25 00:36
wechatide://minicode/f8PmcPmh7n1C已生成代码片段!
回复
-
。。。期待官方的说法
。。。啊啊啊
还真是的。。你赢啦~~
我也是如此怀疑,但奇怪的是我在同样的组件里用类似的方式处理view的bindtap方法,可以!
嗯,在组件里这么用,会有问题。他的this和page指向不一样,不能弄到methods里去
感谢回复,可以看看我刚才贴的代码。我用一个第三方dialog组件。
不知道。。我试试哈,稍等。。
我是在’组件‘里面使用这段代码,会有影响吗?