所以我知道我必须错过这个问题的javascript的一些基本部分,但无论如何它在这里:
我有一个在其中声明变量的控制器:
$scope.IsStartDatePickerHidden = true;
$scope.IsEndDatePickerHidden = true;
我有一个按钮,其ng-click设置为我的控制器中的一个功能。如果它接受一个可以改变值的参数,那么这个函数会很好:
<button type="button" ng-click="showDatePicker(IsStartDatePickerHidden)" >
$scope.showDatePicker = function(showDatePicker)
{
showDatePicker = false;
}
当我单步执行此代码时,函数showDatePicker会更改传入的参数的值,但似乎不会更改控制器中变量的值,因此没有任何反应。我确信这必须与通过引用传递有关。我只是不确定如何传递这个,以便$ scope.IsStartDatePickerHidden或$ scope.IsEndDatePickerHidden根据我传入的那个而改变。
答案 0 :(得分:6)
布拉德的回答是正确的,但是如果你想要更通用的东西,那么你可以改变任何范围变量的值:
<button type="button" ng-click="showDatePicker('IsStartDatePickerHidden')" >
$scope.showDatePicker = function(varName)
{
$scope[varName] = false;
}
这不一定是好习惯,但通常很有用。说到这一点,你可以在ng-click中进行分配:
<button type="button" ng-click="IsStartDatePickerHidden = false" >
答案 1 :(得分:2)
如何修复该示例小提琴: http://jsfiddle.net/p3p6ova7/
如果您知道要在作用域上使用的变量,则无需传递这些值。在您的情况下,您正在功能中初始化一个新变量showDatePicker
,并为其指定false,这对$scope.IsStartDatePickerHidden
您也可以简单地执行ng-click="IsStartDatePickerHidden = false"
,但这可能是一种外部最佳做法。