【发布时间】:2015-10-22 02:20:06
【问题描述】:
所以我有一个正在使用 Angular JS v1.4.0 开发的应用程序,但我遇到了范围界定问题。有一个部分需要提交一个表单,但在发送之前需要修改数据。我目前正在尝试在调用服务器之前在 javascript 中执行此操作。
我有 $scope.msgEditor,它是表单所必需的一堆不同值的对象,以及消息变量本身。重要的部分如下所示:
msgEditor [
msg: {
groups: {
selected: {
0: '1',
1: '2',
}
}
}
]
我正在尝试获取这个 $scope 变量,将其分配给一个局部变量,然后像这样开始解析数据:
$scope.formOnSubmit = function () {
formattedMessage = formatDataForSave($scope.msgEditor.msg);
};
function formatDataForSave(message) {
message.groups = message.groups.selected.join(', ');
return message;
}
我想要发生的是 $scope.msgEditor.msg 完全不改变,并且从第二个函数返回 formattedMessage ,因此可以将其放入 $http 调用中。但是,join 更改了 message、formattedMessage 和 $scope.msgEditor.msg
我做了更多测试,看看发生了什么:
$scope.formOnSubmit = function () {
$scope.test = $scope.msgEditor.msg;
var formattedMessage = $scope.test;
formattedMessage = formatDataForSave(formattedMessage);
};
发现对formattedMessage做的改变,会改变$scope.test,会改变$scope.msgEdtior.msg。
任何关于为什么会发生这种情况或如何防止它的方向都会令人惊叹。
【问题讨论】:
标签: javascript angularjs data-binding angularjs-scope