2016-07-22 265 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