如何使用angularjs在不改变输入类型复选框条件的情况下禁用按钮



我有一个有趣的情况,我有下面的代码。

Js:

<script>
var app = angular.module('MyApp', []);    
app.controller('MyCtrl', function($scope) {
$scope.a=10;
});
</script>

html:

<body ng-app="MyApp">
<div ng-controller="MyCtrl">
Click Me: <input type="checkbox" ng-model="checked" ng-if="a===10"/> <br />
<button ng-disabled="checked">Test</button>
</div>
</body>

如果我运行上面的代码,Test按钮没有禁用。我不知道为什么?

但是,根据我的要求,ng-if条件应该只存在于<input />标签中,并且我不能在一个<div>中写入或组合<input /><button>标签。

所以,请帮助我,要想有任何其他方法来获得我的Test button,请在不更改上述示例代码的情况下单击input类型复选框,使其处于禁用模式。

Codepen。

因为ng-if创建了一个子作用域,所以为了使ng-modelng-if一起工作,您需要将其与对象的属性绑定。类似这样的东西:

JS

<script>
var app = angular.module('MyApp', []);    
app.controller('MyCtrl', function($scope) {
$scope.a=10;
$scope.checkbox = {};
});
</script>

HTML

<body ng-app="MyApp">
<div ng-controller="MyCtrl">
Click Me: <input type="checkbox" ng-model="checkbox.checked" ng-if="a===10"/> <br />
<button ng-disabled="checkbox.checked">Test</button>
</div>
</body>

Codepen

尝试下面的代码:

<html ng-app="MyApp">
<head>
</head>
<body ng-controller="MyCtrl">
<div>
Click Me: <input type="checkbox" ng-model="data.checked" ng-if="a===10"/> <br />
</div> 
<button ng-disabled="data.checked">Test</button>
</div>
</body>
</html>

并在您的脚本中添加以下内容:

<script>
var app = angular.module('MyApp', []);    
app.controller('MyCtrl', function($scope) {
$scope.a=10;
$scope.data = {};
});
</script>

最新更新