2016-07-22 126 views
0

我对控制器有以下代码。在初始加载时,closeBtnText根据hasClosebtn得到适当设置,但是当稍后更新该变量时,它不会更新。正在使用一种方法来更新唯一的方法?AngularJS变量依赖于范围内的另一个变量

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

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

您可以使用'$ scope。$ watch'。 – NMSL

回答

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周期。

1

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

如果添加和ngClick到你的按钮切换,你会看到的变化,当你点击它

既然是文本值的新人对角问题,我要去给你的文档链接,ngClick进一步调查ngClick