我有以下函数调用:
var qid = 6;
var $scope.qidLower = null;
var $scope.qidUpper = null;
_o.parseRange(qid, $scope.qidLower, $scope.qidUpper);
// Checking after here the values of $scope.qidLower and $scope.qidUpper are null !
这传递给我的函数:
var _parseRange = function (text, lower, upper) {
if (!text || text === "") {
lower = null;
upper = null;
}
else if (text.indexOf("-") > 0) {
arr = text.split("-");
lower = +arr[0];
upper = +arr[1];
}
else {
lower = +text;
upper = null;
}
}
当我检查低位和高位的值时,该函数将它们设置为6并且为空
当我现在$ scope.qidLower,$ scope.qidUpper在函数调用之后的行上它们都是null。
有人可以解释为什么会这样。我想如果函数修改了一个参数值 在函数返回后它将可用。
答案 0 :(得分:0)
将$scope.qidLower
和$scope.qidUpper
作为参数传递给函数时。引用复制到参数。
当您在函数内为这些参数指定值(新参考)时,参数的引用会发生变化,但$scope.qidLower
和{{1 } 不
<强>解决方案:强>
$scope.qidUpper
更改您的代码:
var _parseRange = function (text, lower, upper) {
if (!text || text === "") {
lower = null;
upper = null;
}
else if (text.indexOf("-") > 0) {
arr = text.split("-");
lower = +arr[0];
upper = +arr[1];
}
else {
lower = +text;
upper = null;
}
return {lower:lower,upper:upper}; //return at the end of the function
}
注意:强>
如果您为var qid = 6;
var $scope.qidLower = null;
var $scope.qidUpper = null;
var calculatedBounds = _o.parseRange(qid, $scope.qidLower, $scope.qidUpper);
$scope.qidLower = calculatedBounds.lower;
$scope.qidUpper = calculatedBounds.upper;
和$scope.qidLower
以及函数内部分配了非空对象,则更新参数的属性,而不是分配新对象,您的$scope.qidUpper
和$scope.qidLower
会注意到更改。
$scope.qidUpper
调用该函数:
var _parseRange = function (text, bounds) {
if (!text || text === "") {
bounds.lower = null;
bounds.upper = null;
}
else if (text.indexOf("-") > 0) {
arr = text.split("-");
bounds.lower = +arr[0];
bounds.upper = +arr[1];
}
else {
bounds.lower = +text;
bounds.upper = null;
}
}
答案 1 :(得分:0)
试试这种方式
var qid = 6;
$scope.qidLower = $scope.qidLower;
$scope.qidUpper = $scope.qidLower;
_o.parseRange(qid, $scope.qidLower, $scope.qidUpper)
和
var _parseRange = function (text, lower, upper) {
if (!text || text === "" || text === undefined) {
lower = null;
upper = null;
}
else if (text.indexOf("-") > 0) {
arr = text.split("-");
lower = +arr[0];
upper = +arr[1];
}
else {
lower = +text;
upper = null;
}
$scope.qidLower = lower ;
$scope.qidUpper = upper ;
}
现在,您可以从
获取任何时间和地点的值 $scope.qidLower
和$scope.qidUpper