在我的项目中,我遇到的问题是ng-if无效。我希望在$ scope.edit的值发生变化时删除/添加文本字段。
我在下面的jsfiddle中创建了一个最简单的例子。
HTML
<div ng-app>
<div ng-controller="TodoCtrl">
<input type="checkbox" ng-model="edit" ng-init="edit = true">
<div ng-bind="edit"></div>
<div ng-if="edit">
<input type="text" ng-model="name" size="30" placeholder="New Name" />
</div>
</div>
</div>
JS
function TodoCtrl($scope) {
$scope.name = "Johny";
}
答案 0 :(得分:2)
您的小提琴可能无效,因为您使用的是 Angular 1.0.1 which has some issue in ng-if
。
如果您确实在使用此版本,则可以将ng-if
替换为ng-show
(这将在DOM中创建隐藏元素)。
<div ng-show="edit">
Demo on JSFiddle using ng-show
无论如何,最好的解决方案是使用 Angular 1.2 + 修复ng-if
中的ng-repeat
个错误。正如您在下面的代码片段中看到的那样,我没有更改您的代码,而且它可以正常工作。
答案 1 :(得分:1)
一些观察结果:
ng-if
无效。ng-show
代替ng-if
。使用ng-if进行演示:
function TodoCtrl($scope) {
$scope.name = "Johny";
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app>
<div ng-controller="TodoCtrl">
<input type="checkbox" ng-model="edit" ng-init="edit = true">
<div ng-bind="edit"></div>
<div ng-if="edit">
<input type="text" ng-model="name" size="30" placeholder="New Name" />
</div>
</div>
</div>
&#13;
使用ng-show进行演示
function TodoCtrl($scope) {
$scope.name = "Johny";
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.min.js"></script>
<div ng-app>
<div ng-controller="TodoCtrl">
<input type="checkbox" ng-model="edit" ng-init="edit = true">
<div ng-bind="edit"></div>
<div ng-show="edit">
<input type="text" ng-model="name" size="30" placeholder="New Name" />
</div>
</div>
</div>
&#13;
答案 2 :(得分:0)
使用ng-show代替
<div ng-show=edit>
<input type="text" ng-model="name" size="30" placeholder="New Name" />
</div>
<强> DEMO 强>
使用ng-if
更新1.2或更高版本的角度版本
angular.module('myApp', [])
.controller('TestCtrl', function($scope) {
$scope.name = "Johny";
});
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>AngularJS </title>
<link rel="stylesheet" href="style.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.5/angular.js"></script>
</head>
<body ng-app="myApp">
<div ng-controller="TestCtrl">
<input type="checkbox" ng-model="edit" ng-init="edit = true">
<div ng-bind="edit"></div>
<div ng-show=edit>
<input type="text" ng-model="name" size="30" placeholder="New Name" />
</div>
</body>
</html>