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

时间:2014-06-20 04:59:43

标签: javascript jquery angularjs

如何在点击按钮时更改按钮的文字。

这是我尝试过的。

HTML:

<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;
}

4 个答案:

答案 0 :(得分:27)

或者,如果您愿意,请保留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>

答案 1 :(得分:22)

我认为,使用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

答案 2 :(得分:9)

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

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

<button ng-click="toggle = !toggle">{{toggle && 'Toggle!' || 'some text'}}</button>

答案 3 :(得分:0)

这是我的解决方案,支持翻译:

HTML:

<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.enabledglobal.disabled指的是i18n JSON翻译。您还需要在JS中初始化enableCaption,以便创建空对象。