如何更改按钮的文本点击按钮。这就是我所尝试的。超文本标记语言:
<button ng-click="toggle = !toggle">Toggle!</button> <div class="box on" ng-show="toggle" ng-animate="'box'">On</div>
JS:
function MainController($scope) { $scope.toggle = true; }
rekjcdws1#
或者,如果您愿意,将所有内容保留在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>
4smxwvx52#
我想,用一块toggle的手表应该就可以了。
toggle
<button ng-click="toggle = !toggle">{{toggleText}}</button> <div class="box on" ng-show="toggle" ng-animate="'box'">On</div>
然后
app.controller('AppController', function ($scope) { $scope.toggle = true; $scope.$watch('toggle', function(){ $scope.toggleText = $scope.toggle ? 'Toggle!' : 'some text'; }) })
演示:Fiddle
zfycwa2u3#
我不会使用watch和ng-show,因为它们的性能。就这么简单:
app.controller('AppController', function ($scope) { $scope.toggle = true; }) <button ng-click="toggle = !toggle">{{toggle && 'Toggle!' || 'some text'}}</button>
0s7z1bwu4#
以下是我的解决方案,支持翻译:超文本标记语言:
<span class="togglebutton"> <label> <input type="checkbox" checked="{{myApp.enabled}}" ng-model="myApp.enabled" ng-click="toggleEnabled()"> <span translate="{{myApp.enableCaption}}">Is Enabled?</span> </label> </span>
JS -控制器:
$scope.toggleEnabled = function() { $scope.myApp.enableCaption = $scope.myApp.enabled ? 'global.enabled' : 'global.disabled'; };
其中global.enabled和global.disabled指的是i18 n JSON翻译。您还需要在JS中初始化enableCaption,在您创建空对象的地方。
global.enabled
global.disabled
enableCaption
lrl1mhuk5#
现有的答案是好的,但这里有一个更精确的解决方案,它使用三进制来选择适当的文本,这取决于切换是打开还是关闭。此外,toggle是一个有点不清楚的变量名,因为它不清楚“true”或“false”对应的状态。也许toggleOn或简单的on更好。
toggleOn
on
angular.module("exampleApp", []) .controller("toggleCtrl", function($scope) { $scope.on = true; });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.js"></script> <div ng-app="exampleApp" ng-controller="toggleCtrl"> <button ng-click="on = !on"> Toggle {{on ? "off" : "on"}} </button> <div ng-show="on">On</div> </div>
5条答案
按热度按时间rekjcdws1#
或者,如果您愿意,将所有内容保留在HTML中,而不是在控制器中定义按钮文本:
4smxwvx52#
我想,用一块
toggle
的手表应该就可以了。然后
演示:Fiddle
zfycwa2u3#
我不会使用watch和ng-show,因为它们的性能。就这么简单:
0s7z1bwu4#
以下是我的解决方案,支持翻译:
超文本标记语言:
JS -控制器:
其中
global.enabled
和global.disabled
指的是i18 n JSON翻译。您还需要在JS中初始化enableCaption
,在您创建空对象的地方。lrl1mhuk5#
现有的答案是好的,但这里有一个更精确的解决方案,它使用三进制来选择适当的文本,这取决于切换是打开还是关闭。此外,
toggle
是一个有点不清楚的变量名,因为它不清楚“true”或“false”对应的状态。也许toggleOn
或简单的on
更好。