我有一个对象playerInfoObject,其属性为w1和w2,它们也是对象。
我需要改变彼此之间的位置
当我尝试这样做时,它们变得平等:
CommandParameter="{Binding RelativeSource={RelativeSource Self}}"
我该如何解决这个问题?
提前谢谢
答案 0 :(得分:0)
如果您可以使用EcmaScript 6,destructuring assignment可以在没有临时变量的情况下解决它:
playerInfoObject = {
w1: {w: '1'},
w2: {w: '2'}
};
[playerInfoObject.w1, playerInfoObject.w2] = [playerInfoObject.w2, playerInfoObject.w1];
或直接使用object destructuring:
({w1: playerInfoObject.w2, w2: playerInfoObject.w1}) = playerInfoObject;
否则,您的代码似乎工作正常。
答案 1 :(得分:0)
=
运算符在对象之间放置引用,您需要克隆它。
var tmp = JSON.decode(JSON.encode(playerInfoObject.w1));
playerInfoObject.w1 = JSON.decode(JSON.encode(playerInfoObject.w2));
playerInfoObject.w2 = tmp;
你可以找到更优雅的克隆对象的方法,但这应该有效。