我有一个控制器的代码。在初始加载时,closeBtnText
会根据hasClosebtn
正确设置,但是当该变量稍后更新时,它不会更新。使用方法更新唯一的方法吗?
app.controller("appCtrl", function($scope){
$scope.hasClosebtn = true;
$scope.closeBtnText = ($scope.hasClosebtn) ? "test" : 'sdffffffff';
});
});
答案 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
周期。