将范围变量传递到ng-click中

use*_*646 3 javascript angularjs

所以我知道我必须错过这个问题的javascript的一些基本部分,但无论如何它在这里:

我有一个控制器,其中声明了一个变量:

$scope.IsStartDatePickerHidden = true;
$scope.IsEndDatePickerHidden = true;
Run Code Online (Sandbox Code Playgroud)

我有一个按钮,其ng-click设置为我的控制器中的一个功能.如果它接受一个可以改变值的参数,那么这个函数会很好:

<button type="button" ng-click="showDatePicker(IsStartDatePickerHidden)" >

 $scope.showDatePicker = function(showDatePicker)
 {
     showDatePicker = false;
 }
Run Code Online (Sandbox Code Playgroud)

当我单步执行此代码时,函数showDatePicker会更改传入的参数的值,但似乎不会更改控制器中变量的值,因此没有任何反应.我确信这必须与通过引用传递有关.我只是不确定如何传递这个,以便$ scope.IsStartDatePickerHidden或$ scope.IsEndDatePickerHidden根据我传入的更改.

Con*_*nos 6

Brad的答案是正确的,但是如果您想要更通用的东西,那么您可以更改任何范围变量的值:

<button type="button" ng-click="showDatePicker('IsStartDatePickerHidden')" >

 $scope.showDatePicker = function(varName)
 {
     $scope[varName] = false;
 }
Run Code Online (Sandbox Code Playgroud)

这不一定是好的做法,但通常很有用.说到这个,你可以在ng-click中进行分配:

<button type="button" ng-click="IsStartDatePickerHidden = false" >
Run Code Online (Sandbox Code Playgroud)