如果条件为真,则不使用ng显示元素

时间:2017-05-31 09:36:05

标签: javascript angularjs

我使用ng-if来显示/隐藏页面中的一些元素,如下所示:

<span ng-if="user.name == ''||user.name ==null">Name:No Data</span>
<span ng-if="user.name != ''&& user.name !=null" ng-bind="'Name:' + user.name"></span>

但无论user.name是否设置,都会显示这两个元素。我在Chrome的控制台中确认在使用调试模式运行时条件为真。 在我用ng-if替换ng-show后,它工作正常,我真的对此感到困惑。

赞赏任何澄清。谢谢!

更新

这是我的$scope.user

var u = {
    'loginId': mb,
    'mobile': mb.substr(0,3 ) + "****" + mb.substr(7, 11),
    'account': mb.substr(0,3 ) + "****" + mb.substr(7, 11),
    'score': data.score,
    'email': data.email,
    'name': data.name,
    'id': data.id
};
$scope.user = u;

现在我确实拥有user.name的价值,我尝试了下面提供的建议,这是我的测试结果。

The first one

The second one

5 个答案:

答案 0 :(得分:2)

您正在使用int n = 3; char vla[n]; // this is a variable length array char arr[3]; // this is just an array char* darr = new char[3]; // this is a pointer pointing to dynamically allocated memory std::string str; // but instead, this is just better 来检查即使数据未定义或其他类似数据也会成功的相等性。所以使用==来完成你的工作。

一切顺利。

答案 1 :(得分:1)

如果user.nameundefinednull""

,则效果很好

&#13;
&#13;
function MyCtrl($scope) {
  $scope.user = {
    name: "xyz"
  };
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<body ng-app ng-controller="MyCtrl">
  <span ng-if="!user.name">Name:No Data</span>
  <span ng-if="user.name" ng-bind="'Name:' + user.name"></span>
</body>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您的问题是未定义的。 请记住null == undefinednull !== undefined

因此,当未定义属性时,将显示两个条件。

您的情况只能是ng-if="user.name"或使用严格的平等===

答案 3 :(得分:0)

检查你的情况:

<span ng-if="user.name">Name:No Data</span>
<span ng-if="!user.name" ng-bind="'Name:' + user.name"></span>

由于当false为:user.name时,null评估为0""NaN(空字符串),false或仅json_data = json.loads(req.stream.read())

仅在您确定声明变量时才有效。

答案 4 :(得分:0)

确保您拥有最新的Angular版本,但在早期版本的~v1.0.1中无法使用

  

AngularJS在1.1.5

中添加了ngIf指令

工作演示

var myApp = angular.module('myApp',[]);

myApp.controller("MyCtrl", function($scope) {
  $scope.user = {
    name: "Rohit"
  };
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="MyCtrl">
  <span ng-if="user.name == '' || user.name == null">Name:No Data</span>
  <span ng-if="user.name != '' && user.name != null" ng-bind="'Name:' + user.name"></span>
</div>