NutzCN Logo
问答 vue中数据绑定radio,切换radio的时候显示隐藏div未生效
发布于 2243天前 作者 zp8821138 6567 次浏览 复制 上一个帖子 下一个帖子
标签:

写了一个简单的demo是有用的,在新增的时候也可以用,但是编辑的时候却不能用,简单demo如下

<div id="app">
		  <input type="radio" v-model="showImage" value="0"/>
		  <input type="radio" v-model="showImage" value="1"/>
		  
		  <div v-if="showImage==1">
		  		{{message}}
		  </div>
		</div>
		
		<script>
			
			var vm = new Vue({
				el:'#app',
				data:{
					message:'hello',
					showImage:0
				}
			})
		</script>

我写的代码是这样的

var vm = new Vue({
	el:'#dpLTE',
	data: {
		oldLoginName:'',
		newLoginName:'',
		oldRoleIds:[],
		newRoleIds:[],
		roleList:{},
		multiple:'multiple',
		user:{
			disabled: false,
			departmentName:'',
			showImage:0
		}
	},
	methods : {
		departmentTree: function(){
		    dialogOpen({
				id: 'layerDepartmentTree',
				title: '选择',
		        url: 'sys/user/departmentTree?_=' + $.now(),
		        scroll : true,
		        width: "300px",
		        height: "450px",
		        yes : function(iframeId) {
		        	top.frames[iframeId].vm.acceptClick();
				}
		    });
		},
		uploadPic:function(){
			var data = new FormData($('#uploadForm')[0]);
            $.ajax({
                url: '../../sys/upload/pic',
                type: 'POST',
                data: data,
                async: false,
                cache: false,
                contentType: false,
                processData: false,
                success: function(r) {
                	var code = r.code;
                	var msg = r.msg;
                    if (code==0) {
                    	var data = r.data;
                    	var pic = data.picName;
                    	vm.user.pic = pic;
                    	dialogMsg(msg, 'success');
                    } else {
                    	dialogMsg(msg, 'error');
                    }
                },
                error: function(data) {
                    console.log(data.status);
                }
            });
		},
		getRoleList: function(){
			$.get('../../sys/role/select?_=' + $.now(), function(r){
				var code = r.code;
				var data = r.data;
				if(code==0){
					vm.roleList = data.rows;
				}
			});
		},
		setForm: function() {
			$.SetForm({
				url: '../../sys/user/infoUser?_=' + $.now(),
		    	param: vm.user.id,
		    	success: function(data) {
		    		vm.user = data.user;
		    		vm.oldRoleIds = vm.newRoleIds =  data.roleIds;
		    		vm.oldLoginName =  vm.newLoginName = vm.user.loginname;
		    	}
			});
		},
		acceptClick: function() {
			if (!$('#form').Validform()) {
		        return false;
		    }
			var params = {"user":vm.user,"oldLoginName":vm.oldLoginName,"newLoginName":vm.newLoginName,"oldRoleIds":vm.oldRoleIds,"newRoleIds":vm.newRoleIds};
		    $.ConfirmForm({
		    	url: '../../sys/user/editDo?_=' + $.now(),
		    	param: params,
		    	success: function(data) {
		    		$.currentIframe().vm.load();
		    	}
		    });
		}
	},
	created : function() {
		this.getRoleList();
	}
})

前台就是和上面demo做的类似的,但是没有效果,setForm方法是填充表单用的,showImage不是user里面的属性,在data中设置没有效果,但是在setForm里面用vm.user.showImage=1的时候是有效果的,可是切换以后showImage并没有发生改变。这个是什么原因啊。一开始觉得数据绑定很好,后来发现有错了不知道哪里错了,叫兽 求救。。

7 回复

acceptClick ?? 会不会跟vue内置方法冲突了?

没有吧,我在add也是这么写的 没有问题。编辑的时候只是多了个发请求获取选中的问题

add和edit都是一个弹出层,唯一的区别是edit弹出层弹出后会发ajax请求获取数据,我想是不是这种导致绑定失效了

你指这个?

$.currentIframe().vm.load();

不是这个,是top.frames[iframeId].vm.setForm();这句话 这句话就是ajax根据id请求编辑的数据,这句注释就好了。。但是不能注释。

function edit() {
	var ck = $('#dataGrid').bootstrapTable('getSelections');
	if (checkedRow(ck)) {
		dialogOpen({
			scroll : true,
			maxmin : true,
			anim : 5,
			title : '编辑栏目',
			url : 'cms/content/edit?_' + $.now(),
			width : '1300px',
			height : '900px',
			success : function(iframeId) {
				top.frames[iframeId].vm.content.id = ck[0].id;
				//top.frames[iframeId].vm.setForm();
			},
			yes : function(iframeId) {
				top.frames[iframeId].vm.acceptClick();
			}
		});
	}
}

$.SetForm换成$.ajax

这个就是$.ajax,只是封装了错误提醒的。

添加回复
请先登陆
回到顶部