我有一个有趣的情况,我有下面的代码。
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-model
与ng-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>