使用angular JS更改单击按钮的文本

use*_*128 18 javascript jquery angularjs

如何在单击按钮时更改按钮的文本.

这是我尝试过的.

HTML:

<button ng-click="toggle = !toggle">Toggle!</button>
<div class="box on" ng-show="toggle" ng-animate="'box'">On</div>
Run Code Online (Sandbox Code Playgroud)

JS:

function MainController($scope) {
  $scope.toggle = true;
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*enT 28

或者,如果您愿意,请保留HTML中的所有内容,而不是在控制器中定义按钮文本:

<button ng-click="toggle = !toggle">
    <span ng-show="toggle">Toggle to Off</span>
    <span ng-hide="toggle">Toggle to On</span>
</button>
<div class="box on" ng-show="toggle" ng-animate="'box'">On</div>
Run Code Online (Sandbox Code Playgroud)

  • 在我看来,这可能是更"正确"的方式,因为文本更改是纯粹的用户界面相关的事情.最佳做法是尝试在控制器之外保留任何严格的UI相关代码,最好是在模板中或指令中. (6认同)

Aru*_*hny 22

我认为,使用手表toggle应该这样做

<button ng-click="toggle = !toggle">{{toggleText}}</button>
<div class="box on" ng-show="toggle" ng-animate="'box'">On</div>
Run Code Online (Sandbox Code Playgroud)

然后

app.controller('AppController', function ($scope) {
    $scope.toggle = true;

    $scope.$watch('toggle', function(){
        $scope.toggleText = $scope.toggle ? 'Toggle!' : 'some text';
    })
})
Run Code Online (Sandbox Code Playgroud)

演示:小提琴


akc*_*soy 9

由于他们的表现,我既不会使用手表也不会使用ng-show.这很简单:

app.controller('AppController', function ($scope) {
    $scope.toggle = true;
})

<button ng-click="toggle = !toggle">{{toggle && 'Toggle!' || 'some text'}}</button>
Run Code Online (Sandbox Code Playgroud)