Javascript 角度:对$scope.variable的If操作

Javascript 角度:对$scope.variable的If操作,javascript,html,angularjs,scope,Javascript,Html,Angularjs,Scope,我想运行一个基于$scope值的函数。在我的控制器中,我有: $scope.value = ""; $scope.selector = function(info) { if ($scope.value === "") { $scope.value = info; } else { $scope.value = ""; } } 该功能在点击不同图像时触发,例如: 我的问题是if操作似乎对$scope值不起作用。我也尝试过: $sc

我想运行一个基于$scope值的函数。在我的控制器中,我有:

 $scope.value = "";
 $scope.selector = function(info) { 
    if ($scope.value === "") {
       $scope.value = info;
    } else {
       $scope.value = "";
    }
 }
该功能在点击不同图像时触发,例如:

我的问题是if操作似乎对$scope值不起作用。我也尝试过:

 $scope.$watch('value', function(val) {
    if(val === "") {
       $scope.value = info;
    }
 }

如果它位于函数外部,则此选项有效,但如果我将其置于选择器函数中,则此选项无效。更好的方法总是受欢迎的。感谢您的解释。

您需要将参数从视图传递到函数,因为您的函数需要输入参数

将视图更改为

img ng-src="..." ng-click="selector(value)">

您需要将参数从视图传递给函数,因为函数需要输入参数

将视图更改为

img ng-src="..." ng-click="selector(value)">

尝试将您的值包含在对象中。在某些情况下,Angular无法“看到”变量已更改

所以,试着保持这样的状态:

$scope.value = { value: "" };
并相应地更改代码的其余部分

我做了一个代码笔,对您的代码进行了一些修复,并对您说:


在本例中,您可以看到val==“”返回true和false。

尝试将您的值包含在对象中。在某些情况下,Angular无法“看到”变量已更改

所以,试着保持这样的状态:

$scope.value = { value: "" };
并相应地更改代码的其余部分

我做了一个代码笔,对您的代码进行了一些修复,并对您说:



在本例中,您可以看到val==“”返回true和false。

您的函数需要一个参数,而您没有给它一个。这是一个输入错误,我已经在做了,我已经纠正了。参数在代码中。我的问题是if函数没有检测到
ng click=“selector(info)”
中的$scope.value==“What is
info
?我从字符串数组中得到的字符串:例如imageName[0],它应该是“Image 1”。如果我直接运行函数,if函数就会运行。但如果我将函数赋给$scope变量,则不会。你的函数需要一个参数,但你没有给它。这是一个输入错误,我已经在做了,我更正了。参数在代码中。我的问题是if函数没有检测到
ng click=“selector(info)”
中的$scope.value==“What is
info
?我从字符串数组中得到的字符串:例如imageName[0],它应该是“Image 1”。如果我直接运行函数,if函数就会运行。但如果我将函数赋值给$scope变量,则不会。对不起,这是一个输入错误,我已经在这样做了,我已经更正了。我的问题是if函数没有检测到$scope.value==“”。请检查您的函数是否正在被调用以及要传递的值。我检查了该值。我可以控制台。日志(信息)和它显示。但如果我把它放在if函数中就不会了。除非我把它放在它前面。不,不幸的是我没有任何屏幕共享帐户。我知道如果$scope变量通常可以进行操作,那么?@sandboxj是的,它应该可以工作,也许你可以调试和检查函数是否被调用并打印值对不起,这是一个输入错误,我已经在做了,我已经纠正了。我的问题是if函数没有检测到$scope.value==“”。请检查您的函数是否正在被调用以及要传递的值。我检查了该值。我可以控制台。日志(信息)和它显示。但如果我把它放在if函数中就不会了。除非我把它放在它前面。不,不幸的是我没有任何屏幕共享帐户。我知道如果$scope变量通常可以进行操作,那么?@sandboxj是的,它应该可以工作,也许您可以调试和检查函数是否被调用,并打印值。这并没有解决问题。if语句仍然会导致false。hi@sandboxj,我用if语句修改了我的答案。这并没有解决问题。if语句仍然会导致false.hi@sandboxj,我用if语句修改了我的答案。