我试图隐藏/显示一些基于函数
的HTML<div ng-if="!!someFunc"> .... </div>
<div ng-if="someFunc !== undefined"> .... </div>
现在的问题是someFunc
是否存在并不重要,它始终显示。有没有办法使这项工作或我应该在范围上创建另一个(布尔)变量?
更新:我这次以角度v1.3.14再现了问题here
答案 0 :(得分:1)
你的AngularJs出了问题(可能太旧了)。 我已将其更新为新版(1.3.14)并且它有效 - http://jsfiddle.net/HB7LU/15068/
没有任何代码更改:
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
//$scope.test = function () {};
}
答案 1 :(得分:1)
你的小提琴是使用角度1.0.1,它甚至不包含ng-if
(在1.1.5版本中引入)。将外部资源更新为更新版本或使用预定义的小提琴框架之一(例如角度1.2)。
答案 2 :(得分:1)
正如其他人现在指出的那样,在Angular 1.0中,ng-if不存在。如果您必须继续使用Angular 1.0,请尝试使用ng-show。
编辑:我想说清楚,虽然在这种情况下ng-if和ng-show都能达到你想要的效果,但它们在幕后的行为却有所不同。简而言之,当ng-if表达式求值为&#34; false&#34;时,该元素将从DOM中删除。当ng-show表达式求值为false时,它只是更改元素的display
属性。您可以详细了解here。
var myApp = angular.module('myApp', []);
function MyCtrl($scope) {
//$scope.test = function () {};
}
&#13;
<div ng-controller="MyCtrl">
Is there a test function: {{!!test}}
<div ng-show="!!test">CLOSE</div>
</div>
&#13;
答案 3 :(得分:1)
这两种尝试都有效。你的小提琴肯定有问题。这是一个完整的例子:
var app = angular.module('app', []);
app.controller('Ctrl', function($scope) {
//$scope.someFunc = function() {};
});
<div ng-app="app" ng-controller="Ctrl">
<div>Some func: {{ someFunc ? 'yup' : 'nope' }}</div>
<div ng-if="!!someFunc">Has some func</div>
<div ng-if="someFunc !== undefined">Has some func</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.2/angular.js"></script>