用了一段时间anjular蛮好用的。其实用的不多。主要用于列表数据绑定以及一些简单效果的绑定,但是最近出现一个现象,百度无果,居然没有人遇到。
现在描述一下,截图不方便,希望有人解惑。
列表ng-repeat绑定列表数据,每一条数据都有一个编辑操作,点击按钮将当前循环对象传到方法Edit(p)中,在Edit方法中将p变量赋值给另一个属性 $scope.UserInfo = p;然后在页面中,点击按钮出来弹出编辑框,编辑框中有很多输入框。绑定值,ng-model="UserInfo.UserName",此时奇怪的现象,修改UserName值之后,UserInfo连带修改,这毫无疑问,关键是列表中的这一行数据也变了,而且此时如果关闭掉(不保存)编辑框,值无法还原。
难道在angular下,赋值是深层次的?类似于引用类型赋值?所以对这个数据的修改其实都是对同一个地址的数据修改?如果这样的话。我该怎么在编辑的时候,不去保存,页面的值能恢复呢?
恢复得话你可以在编辑之前先将修改得UserInfo进行copy一下,然后点击不保存按钮再将这个对象赋回去
对象是引用的,如果你要想编辑时不影响列表,就得克隆一个对象,保存的时候,再把对象值回写。