Angular - 仅在显示要显示的字符串时显示值

时间:2015-10-12 13:48:44

标签: javascript angularjs

我有一个存储在JSON对象中的字符串,我从API中获取该字符串。如果没有要显示的字符串,我似乎无法使用ng-show隐藏它。

在实际的控制器中,我在尝试各种事情时得到了这些结果:

  • string === null给了我true
  • string.length给了我Cannot read property 'length' of null
  • typeof string给了我object
  • angular.equals({}, string)给了我false
  • angular.isObject(string)给了我false
  • 在Chrome网络上,当空白时,字符串设置为null

我已经尝试了所有我能想到的东西,但是当这里有一个空字符串时,我似乎无法理解ng-show。供您参考,当string有一个值时,它只是一个简单的"string"存储在JSON中。

所以我只想检查一下是否真的有一个字符串。有什么想法吗?

来自控制台的示例JSON:

Object {
    name: null
}

2 个答案:

答案 0 :(得分:2)

使用双重否定将其转换为布尔值?

var isString = !!string;

这会在字符串存在时将其转换为true,或者在false时将字符串转换为<{1}}。

你所描述的都是正确的。 null的类型是JavaScript中的对象。

最简单的方法就是执行以下操作:

ng-show="string"

或者我之前说过的可能更正确,因为你传递了布尔

ng-show="!!string"

答案 1 :(得分:1)

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.stringData= "";
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<html>
<body>
    <div ng-app="myApp" ng-controller="myCtrl">
        <div ng-show = "stringData && stringData.length">{{stringData}}</div>
        <input type="textbox" ng-model = "stringData">
    </div>
</body>
</html>