Javascript AngularJS-范围更改时使用if else语句更改变量值
我有一个变量,当另一个作用域改变它的值时,我想改变它Javascript AngularJS-范围更改时使用if else语句更改变量值,javascript,angularjs,Javascript,Angularjs,我有一个变量,当另一个作用域改变它的值时,我想改变它 $scope.switch = true; var thing; if ($scope.switch == false) { thing = "givesFalse"; } else { thing = "givesTrue"; }; this.thingscope = thing; 因此,当我将$scope.switch值更改为false时,thingscope应该输出givesFalse。为了更改范围值,我使用ng单击
$scope.switch = true;
var thing;
if ($scope.switch == false) {
thing = "givesFalse";
}
else {
thing = "givesTrue";
};
this.thingscope = thing;
因此,当我将$scope.switch值更改为false时,thingscope应该输出givesFalse。为了更改范围值,我使用ng单击:
<div ng-controller="myCtrl as myCtrl" ng-app="myApp">
{{myCtrl.thingscope}}
<br>
<a ng-click="switch = !switch">{{switch}}</a>
</div>
但即使我可以看到范围确实在更新,变量似乎也不会同时更新。你可以看到正在工作的弹片。提前谢谢 主要的一点是,当控制器实例化时,控制器的代码只执行一次。 如果您想让它响应更改,则需要使用$watch 在一个架构和性能很重要的真实应用程序中,我建议您直接从ng click调用函数 然后在$scope中定义函数onClickSwitch
主要的一点是,当控制器实例化时,控制器的代码只执行一次。 如果您想让它响应更改,则需要使用$watch 在一个架构和性能很重要的真实应用程序中,我建议您直接从ng click调用函数 然后在$scope中定义函数onClickSwitch 您有两种选择: 0-自动:使用手表
$scope.$watch('switch', function () {
$scope.thing = $scope.switch ? "givesTrue" : "givesFalse";
});
1-手动:使用可更改两个值的自定义函数
ng-click="switch = !switch"
将其更改为:
ng-click="customFunction()"
并在控制器中定义:
$scope.customFunction = function () {
$scope.switch = !$scope.switch;
$scope.thing = $scope.switch ? "givesTrue" : "givesFalse";
}
您有两种选择:
0-自动:使用手表
$scope.$watch('switch', function () {
$scope.thing = $scope.switch ? "givesTrue" : "givesFalse";
});
1-手动:使用可更改两个值的自定义函数
ng-click="switch = !switch"
将其更改为:
ng-click="customFunction()"
并在控制器中定义:
$scope.customFunction = function () {
$scope.switch = !$scope.switch;
$scope.thing = $scope.switch ? "givesTrue" : "givesFalse";
}
我真的不知道如何用我的代码实现它,因为它略有不同,请参阅更新的plunkr这里是一个没有使用$watch的fork我将其标记为正确,因为答案更完整,并且与我的方法相关。谢谢我真的不知道如何用我的代码实现它,因为它略有不同,请参阅更新的plunkr这里是一个没有使用$watch的fork我将其标记为正确,因为答案更完整,并且与我的方法相关。谢谢我用了第二个,效果非常好,谢谢你的方法!这是一个基于你以前的plnkr。对于这两种实现:@joe82-我的建议是使用$scope.watch方法,因为这就是它的构建目的。让Angular为您完成大部分工作。@JoséLezama在第一个实现中,它应该如何工作?我无法通过单击开关在plunkr中切换它link@Joe82检查Plunkr:请使用$scope,这是一种更具角度的方式。我假设您使用的是lodash或下划线,我更喜欢lodash,因此我将lodash包括在内,而不是下划线。另外,我没有找到ng lodash CDN,但您必须使用它来获得更优雅的代码。我使用它没有问题。我只是:-将此更改为$scope-添加lodash库。我使用了第二个库,它工作得非常好,感谢您的方法!这是一个基于你以前的plnkr。对于这两种实现:@joe82-我的建议是使用$scope.watch方法,因为这就是它的构建目的。让Angular为您完成大部分工作。@JoséLezama在第一个实现中,它应该如何工作?我无法通过单击开关在plunkr中切换它link@Joe82检查Plunkr:请使用$scope,这是一种更具角度的方式。我假设您使用的是lodash或下划线,我更喜欢lodash,因此我将lodash包括在内,而不是下划线。另外,我没有找到ng lodash CDN,但您必须使用它来获得更优雅的代码。我使用它没有问题。我只是:-将其更改为$scope-添加lodash库。