gpt4 book ai didi

javascript - 如何使用 angularJS $broadcast 将对象数据作为值(而不是引用)传递

转载 作者:行者123 更新时间:2023-11-28 18:30:27 25 4
gpt4 key购买 nike

我正在尝试使用 AngularJS $broadcast 事件在两个 Controller 内传递一些数据action。但我在将数据作为值(而不是引用)传递时遇到问题。

到目前为止,我所做的首先是创建一个函数,该函数在 shopping-cart.controller.js 中使用 shoppingCart 对象广播 sendCartPreview 事件

>
//function inside shopping-cart.controller.js
function sendCartPreview() {
var shoppingCart = $scope.shoppingCart;
$rootScope.$broadcast('sendCartPreview', shoppingCart);
}

然后,我在另一个 Controller 上添加事件监听器,该 Controller 检索 shoppingCart 数据并将数据值传递给 Controller ​​内的 sendCartPreview 函数

//function inside chat.controller.js
$scope.$on("sendCartPreview", function(event, message){
sendCartPreview(message);
})

基本上,sendCartPreview 函数接收对象数据并将其添加到消息数组中。

function sendCartPreview(shopping_cart) {
//some logic here and push the data to an array
vm.arrayOfMessage.push(shopping_cart);
}

我面临的问题是,每当 $scope.shoppingCart 值发生变化时,vm.arrayOfMessage 内的值也会根据相应的变化而变化。同时我想要实现的是将数据作为值传递(而不是通过引用),以便每次 $scope.shoppingCart 值更改时,都不会影响 vm.arrayOfMessage 内的数据。我该如何实现这一目标?请在这方面需要您的帮助,任何形式的帮助将不胜感激,谢谢!

最佳答案

进行深度复制调用,例如 sendCartPreview(angular.copy(message));

关于javascript - 如何使用 angularJS $broadcast 将对象数据作为值(而不是引用)传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38114214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com