wx.createSelectorQuery()
在微信小程序里调用后:返回一个SelectorQuery对象实例。可以在这个实例上使用select等方法选择节点,并使用boundingClientRect等方法选择需要查询的信息。
用其中一个方法来举例:selectorQuery.select(selector)
在开发小程序中会有一个弹出输入框,点击发表的时候,要获取弹框里的输入值value。运用官方给的方法是用到textarea里的bindinput方法:当键盘输入时,触发 input 事件,event.detail = {value, cursor},如图:
其实利用select方法,在textarea标签里添加id:comment-textarea,wxml代码如下:
<!-- 弹出评论框 -->
<view class="record-container" wx:if="{{openConfirm}}" capture-catch:touchmove="fixed">
<view class="record-gird">
<textarea class="comment_text" id="comment-textarea" placeholder="最多可输入500字" name="textarea" maxlength="500" fixed/>
<view class="weui-flex">
<view class="weui-flex__item">
<button bindtap="bindFormSubmit" class="com_btn">发表</button>
</view>
<view class="weui-flex__item" bindtap="closeConfirm">
<button class="com_btn" style="color: #783DCF;background: #fff;border: 1px solid #783DCF;">取消</button>
</view>
</view>
</view>
</view>
js代码:
function bindFormSubmit() { // 发表评论
wx.createSelectorQuery().select('#comment-textarea').fields({
properties: ['value']
}, function(res) {
var content = res.value;
}).exec()
}
nodesRef.fields(fields, [callback])
获取节点的相关信息,需要获取的字段在fields中指定。返回值是nodesRef对应的selectorQuery。
properties []:指定属性名列表,返回节点对应属性名的当前属性值
selectorQuery.exec([callback])
执行所有的请求,请求结果按请求次序构成数组,在callback的第一个参数中返回。
最终所要获得的提交内容content直接在返回值res里面获取。
官方给的代码例子:
Page({
getFields: function(){
wx.createSelectorQuery().select('#the-id').fields({
dataset: true,
size: true,
scrollOffset: true,
properties: ['scrollX', 'scrollY']
}, function(res){
res.dataset // 节点的dataset
res.width // 节点的宽度
res.height // 节点的高度
res.scrollLeft // 节点的水平滚动位置
res.scrollTop // 节点的竖直滚动位置
res.scrollX // 节点 scroll-x 属性的当前值
res.scrollY // 节点 scroll-x 属性的当前值
}).exec()
}
})