angular.extend - 将变量作为键传递时出错
angular.extend - Error when passing a variable as a key
我有一个奇怪的问题,我无法解释。
我有以下代码:
if (groupsCtrl.groups[groupsCtrl.groupslug].members) {
angular.extend(groupsCtrl.groups[groupsCtrl.groupslug].members, {[friend.key]: true});
} else {
groupsCtrl.groups[groupsCtrl.groupslug].members = {[friend.key]: true};
}
该代码在 firefox 和 chrome 中运行良好。但是,当我 运行 它在 phone 上的移动 android 浏览器中时,我的整个网站崩溃了,只显示一条白线。我发现这是因为这条线:
angular.extend(groupsCtrl.groups[groupsCtrl.groupslug].members, {[friend.key]: true});
特别是 [friend.key]
是问题的根源。我想这是一个兼容性问题,有解决方法吗?这也不起作用:
var friendkey = friend.key;
angular.extend(groupsCtrl.groups[groupsCtrl.groupslug].members, {[friendkey]: true});
非常感谢!我还是个新手,很抱歉,如果这对您来说很明显,我也尝试搜索但不确定要搜索什么。
这是所有编程语言中的经验法则,您不能在创建对象时动态定义对象 属性 名称。 JSON、对象等 JavaScript 中应用了相同的规则
解决这个问题的最好方法是,先创建一个你想扩展的对象,然后再将它传递给扩展函数。动态创建对象 属性 的核心问题,您可以通过使用 bracket notation
.
访问来设置对象键
代码
var tempObject = {}; //creating temp object
tempObject[friend.key] = true; //adding dynamic key with value.
if (groupsCtrl.groups[groupsCtrl.groupslug].members) {
angular.extend(groupsCtrl.groups[groupsCtrl.groupslug].members, object);
} else {
groupsCtrl.groups[groupsCtrl.groupslug].members = object;
}
我有一个奇怪的问题,我无法解释。
我有以下代码:
if (groupsCtrl.groups[groupsCtrl.groupslug].members) {
angular.extend(groupsCtrl.groups[groupsCtrl.groupslug].members, {[friend.key]: true});
} else {
groupsCtrl.groups[groupsCtrl.groupslug].members = {[friend.key]: true};
}
该代码在 firefox 和 chrome 中运行良好。但是,当我 运行 它在 phone 上的移动 android 浏览器中时,我的整个网站崩溃了,只显示一条白线。我发现这是因为这条线:
angular.extend(groupsCtrl.groups[groupsCtrl.groupslug].members, {[friend.key]: true});
特别是 [friend.key]
是问题的根源。我想这是一个兼容性问题,有解决方法吗?这也不起作用:
var friendkey = friend.key;
angular.extend(groupsCtrl.groups[groupsCtrl.groupslug].members, {[friendkey]: true});
非常感谢!我还是个新手,很抱歉,如果这对您来说很明显,我也尝试搜索但不确定要搜索什么。
这是所有编程语言中的经验法则,您不能在创建对象时动态定义对象 属性 名称。 JSON、对象等 JavaScript 中应用了相同的规则
解决这个问题的最好方法是,先创建一个你想扩展的对象,然后再将它传递给扩展函数。动态创建对象 属性 的核心问题,您可以通过使用 bracket notation
.
代码
var tempObject = {}; //creating temp object
tempObject[friend.key] = true; //adding dynamic key with value.
if (groupsCtrl.groups[groupsCtrl.groupslug].members) {
angular.extend(groupsCtrl.groups[groupsCtrl.groupslug].members, object);
} else {
groupsCtrl.groups[groupsCtrl.groupslug].members = object;
}