angular.extend - 将变量作为键传递时出错

时间:2016-01-03 16:31:36

标签: javascript android angularjs extend

我有一个奇怪的问题,我无法解释。

我有以下代码:

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&铬。但是,当我在手机上的移动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});

非常感谢!我仍然是一个新手,很抱歉,如果这对你来说很明显,也试着搜索,但不知道该搜索什么。

1 个答案:

答案 0 :(得分:0)

它在所有编程语言中的拇指规则,在创建对象时无法动态定义对象属性名称。在JSON,对象等的JavaScript中应用相同的规则

解决此问题的最佳方法是,在将其传递给extend函数之前,创建一个您想要扩展的对象。动态创建对象属性的核心问题是,您只需使用'orderby' => 'meta_value' 进行访问即可设置对象密钥。

<强>代码

bracket notation