小程序
小游戏
企业微信
微信支付
扫描小程序码分享
第一种:
this.data.userName = "admin";
this.setData(this.data);
第二种:
this.setData({
userName : 'admin'
});
请问这两种方式有区别吗?
6 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
我可以
var obj;
obj['userName'] = e.detail.value;
this.setData(obj);
也可以
var userName = e.detail.value;
this.setData({userName});
这两个都可以出现效果
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
是“有效果”,还是“没有效果”?
如果你的问题是为什么没有效果,我的解释是:
setData期望的值是一个对象。如果e.detail.value的值是一个对象,即{},你值入的值是{{}},解释器无法理解;如果e.detail.value是一个简单类型(字符串),你值入的值是{string},也是错的(对象缺少键名)。
正确的写法:
userName是对象:this.setData(userName);
userName是字符串: this.setData({userName: userName});
这是我的这个页面的data
/**
* 页面的初始数据
*/
data: {
userName : null
},
bindinput事件中这么写,有效果,这是为什么
// 根据属性名设置的方法(不知道你要找的是不是这个,送你了,不谢):
var params = [ ];
params[propertyName] = val;
this.setData(params);
主要是想封装一个input的template,左中右分别为label标签,input框,后缀单位。
使用bindinput事件,所以我得传一个方法进去。
不能写死,但输入的值得放在this.data的某个属性里面,所以设计了一个data-bind-property传入这个属性的名字,
就找到了第一种写法,第二种方法不知如何实现
只有一个属性时两者应该没什么区别,如果this.data属性较多时,推荐使用第二种方法局部更新。虽然不了解小程序内部的渲染机制,但只渲染需要变更部分的思想是没错的,开发中还是尽量只提交需要重新渲染的数据部分。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
我可以
var obj;
obj['userName'] = e.detail.value;
this.setData(obj);
也可以
var userName = e.detail.value;
this.setData({userName});
这两个都可以出现效果
是“有效果”,还是“没有效果”?
如果你的问题是为什么没有效果,我的解释是:
setData期望的值是一个对象。如果e.detail.value的值是一个对象,即{},你值入的值是{{}},解释器无法理解;如果e.detail.value是一个简单类型(字符串),你值入的值是{string},也是错的(对象缺少键名)。
正确的写法:
userName是对象:this.setData(userName);
userName是字符串: this.setData({userName: userName});
这是我的这个页面的data
/**
* 页面的初始数据
*/
data: {
userName : null
},
bindinput事件中这么写,有效果,这是为什么
var userName = e.detail.value;
this.setData({userName});
// 根据属性名设置的方法(不知道你要找的是不是这个,送你了,不谢):
var params = [ ];
params[propertyName] = val;
this.setData(params);
主要是想封装一个input的template,左中右分别为label标签,input框,后缀单位。
使用bindinput事件,所以我得传一个方法进去。
不能写死,但输入的值得放在this.data的某个属性里面,所以设计了一个data-bind-property传入这个属性的名字,
就找到了第一种写法,第二种方法不知如何实现
只有一个属性时两者应该没什么区别,如果this.data属性较多时,推荐使用第二种方法局部更新。虽然不了解小程序内部的渲染机制,但只渲染需要变更部分的思想是没错的,开发中还是尽量只提交需要重新渲染的数据部分。