AngularJS变量依赖于范围内的另一个变量

时间:2016-07-22 15:03:48

标签: javascript angularjs

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

app.controller("appCtrl", function($scope){

    $scope.hasClosebtn = true;
    $scope.closeBtnText = ($scope.hasClosebtn) ? "test" : 'sdffffffff';
    });
});

2 个答案:

答案 0 :(得分:1)

它没有更新,因为您的$scope.closeBtnText已初始化为测试。

如果您添加和点击按钮切换文本的值,您将在单击时看到更改

由于它是角色问题的新手,我将为您提供ngClick的文档链接以供进一步调查ngClick

答案 1 :(得分:1)

如果您只需要在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周期。