使用angular.merge()不更新值

时间:2016-03-09 09:52:47

标签: angularjs angularjs-directive

我有一个默认的Object,其中列出了所有参数。现在我给用户一个列出一些参数并让它工作的权利,其他的将是我提到的默认值。 问题是我没有让它在使用angular的深度复制解决方案的指令中工作,即angular.merge() 您可以看到代码here。 问题出在这些方面。

console.log(scope.options);
scope.options = angular.merge(defaultOptions,scope.options);
console.log(scope.options);

现在,如果您在控制台中看到scope.options两者都不同,则不应该是这种情况。 我该如何解决这个问题?我做错了什么?

2 个答案:

答案 0 :(得分:1)

您可能没有注意到,但是您正在将数组($scope.options)与对象文字(defaultOptions)合并。尝试将$scope.options更改为对象,您将获得所需的行为,至少是您要求的行为。

小提琴updated

答案 1 :(得分:0)

为什么他们应该有所不同?你合并他们。

您正在 scope.options 中合并 defaultOptions

在您的示例中,我假设您要进行 defaultOptions === scope.options ,因此如果您想使用合并进行复制,则需要

delete scope.options;

这是Fiddle