首页 新闻 会员 周边

一个AngularJs双向绑定的问题。

0
[待解决问题]

用了一段时间anjular蛮好用的。其实用的不多。主要用于列表数据绑定以及一些简单效果的绑定,但是最近出现一个现象,百度无果,居然没有人遇到。
现在描述一下,截图不方便,希望有人解惑。

列表ng-repeat绑定列表数据,每一条数据都有一个编辑操作,点击按钮将当前循环对象传到方法Edit(p)中,在Edit方法中将p变量赋值给另一个属性 $scope.UserInfo = p;然后在页面中,点击按钮出来弹出编辑框,编辑框中有很多输入框。绑定值,ng-model="UserInfo.UserName",此时奇怪的现象,修改UserName值之后,UserInfo连带修改,这毫无疑问,关键是列表中的这一行数据也变了,而且此时如果关闭掉(不保存)编辑框,值无法还原。

难道在angular下,赋值是深层次的?类似于引用类型赋值?所以对这个数据的修改其实都是对同一个地址的数据修改?如果这样的话。我该怎么在编辑的时候,不去保存,页面的值能恢复呢?

辉辉爱编程的主页 辉辉爱编程 | 初学一级 | 园豆:180
提问于:2018-10-30 19:21
< >
分享
所有回答(2)
0

恢复得话你可以在编辑之前先将修改得UserInfo进行copy一下,然后点击不保存按钮再将这个对象赋回去

番茄先生 | 园豆:911 (小虾三级) | 2018-10-31 11:19
0

对象是引用的,如果你要想编辑时不影响列表,就得克隆一个对象,保存的时候,再把对象值回写。

爱编程的大叔 | 园豆:30839 (高人七级) | 2018-10-31 12:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册