AngularJS变量依赖于作用域中的另一个变量

AngularJS variable dependent on another variable from the scope

本文关键字:变量 另一个 作用域 依赖于 AngularJS      更新时间:2023-09-26

我有下面的控制器代码。在初始加载时,closeBtnText会根据hasClosebtn正确设置,但当该变量稍后更新时,它不会更新。使用方法更新是唯一的方法吗?

app.controller("appCtrl", function($scope){
    $scope.hasClosebtn = true;
    $scope.closeBtnText = ($scope.hasClosebtn) ? "test" : 'sdffffffff';
    });
});

如果您只需要在DOM中显示它,这应该可以工作:

<div ng-controller="appCtrl">
    <p>{{ hasClosebtn ? "test" : "sdffffffff" }}</p>
<div>

如果您需要将其存储在$scope.closeBtnText中,可以使用$watch:

$scope.$watch('hasClosebtn', function(newValue, oldValue) {
    $scope.closeBtnText = newValue ? 'test' : 'sdffffffff';
});

为了深入了解$scope变量在当前代码中没有更新的原因,请考虑以下场景:

app.controller('appCtrl', function($scope) {
    $scope.hasClosebtn = true;
    $scope.closeBtnText = ($scope.hasClosebtn) ? 'test' : 'sdffffffff';
    // $scope.closeBtnText => 'test'
    $scope.hasClosebtn = false;
    // $scope.closeBtnText => 'test'
});

代码流不会返回以重新计算三元表达式。$scope.hasClosebtn上的变化的检测发生在$digest周期。

它不会更新,因为$scope.closeBtnText已初始化为测试。

如果你在切换文本值的按钮上添加和ngClick,当你点击时,你会看到变化

由于这是一个新来的角度问题,我将为您提供ngClick的文档链接以进行进一步调查ngClick