使用Angular ng-show / ng-hide和单选按钮

时间:2015-11-04 19:52:58

标签: angularjs html5

我使用$scope.checked来显示/隐藏" Top"我的HTML中的文本框name="numRows"

然而,即使我点击顶部'单选按钮,$scope.checked始终保留“全部”的值。当我调试我的控制器代码时。

这个简单的plunker似乎工作正常,http://plnkr.co/edit/6GoUZw7zkf8oqUmKg9hf?p=preview,但它在我的应用程序中不起作用。

在plunker中,有一个简单的按钮,其点击值将点击控制器事件$scope.showval以显示" top"的值。或者"所有"。

我的HTML:



<div class="form-group">                                
	<div class="row-fluid">
		<label class="col-md-2 col-lg-2 control-label" for="numRows">Returned Rows</label>
		<!-- ALL ROWS RADIO -->
		<div class="col-md-1 col-lg-1"> 
			<label class="radio-inline" for="radio-all">
				<input name="radios" id="radio-all" value="all" type="radio" ng-model="checked" ng-click="setTopRows('all')">All
			</label>                                         
		</div>
		<!-- TOP NUM OF ROWS RADIO -->
		<div class="col-md-1 col-lg-1">                                    
			<label class="radio-inline" for="radio-top">
				<input name="radios" id="radio-top" value="top" type="radio" ng-model="checked" ng-click="setTopRows('top')">Top
			</label>
		</div>
		<!-- NUM OF ROWS TEXT BOX -->
		<div class="col-md-2">
			<input ng-show="checked == 'top'" ng-hide="checked == 'all'" type="text" class="form-control" name="numRows" ng-model="settings.numRowsReturned" placeholder="" >
		</div>

		<div class="col-md-3">
			Click to show<input type="button" ng-click="showval(e)">
		</div>

	</div>
</div>
&#13;
&#13;
&#13;

我的角度控制器代码的片段:

$ scope.checked值始终是&#39; all&#39;,即使我点击了&#39; top&#39;来自html。

&#13;
&#13;
(function () {
    'use strict';
    angular.module('rage')
       .controller('GadgetSettingsCtrl_NEW', ['$rootScope', '$scope', '$modalInstance', gridSettings]);

    function gridSettings($rootScope, $scope, $modalInstance,) {

        var settings = this;

        $scope.checked = 'all';

        
        
        $scope.showval = function (e) {
            var test = $scope.checked;
        }
        
        $scope.setTopRows = function (numRows) {
            if (numRows === 'top') {
                $scope.checked = 'top';
            }
            else {
                $scope.checked = 'all';
            }
        }
        
        function checkOptions(){
            var top = '';
            if ($scope.checked === 'top') {
              top = (settings.numRowsReturned != undefined ? settings.numRowsReturned : '');
            }            
        }
      
  };   // end of gridSettings()    
})();
&#13;
&#13;
&#13;

当有人点击单选按钮时,有人可以帮我解决为什么$ scope.checked没有改变吗?

谢谢你, 鲍勃

****** UPDATE *********

我添加了一个简单的ng-click="setTopRows('all')"来强制我的范围变量进行更改。这样可行,但似乎有太多代码可以实现这一目标。

0 个答案:

没有答案