尝试根据 JSON 类型显示内容,没有带 angular 的控制器

Trying to display content based on JSON type, no controller w/ angular

我有一个 JSON 文件,其中包含一个对象数组或一个字符串。我正在尝试根据那里的 JSON 类型显示它。

JSON 文件,

场景 1 JSON

"thing":{"important":"a giant banana"}

情景 2 JSON

"thing":{"important":[
{"one":"one banana"},
{"two":"two banana"}
]}

所以我尝试了,

<p ng-show='angular.isString(thing.important)'>Hey guy im a string</p>

<p ng-show="typeof thing.important === 'string'">Hey guy im a string</p>

但当然两者都不起作用,我如何根据 JSON(数组或字符串)

中的类型在 ng-show 中放置一些内容来显示

您无法直接在 HTML 上访问 Javascript 方法,因为 $scope 只对视图公开,无论您在 {{}} 中尝试什么,都可以在 $scope 控制器并对其进行评估。

如果您想直接在 Javascript 视图中访问可用的 object/methods,那么您应该使用将这些对象放入 $scope 属性,然后将其放入可从 UI.

访问

HTML

<p ng-show='angular.isString(thing.important)'>Hey guy im a string</p>

控制器

$scope.angular = angular; //but this is not preferred way to do it.

另一种方法是您可以在 ng-show & 中调用该方法,它将与本机 method/object.

通信

HTML

<p ng-show="checkStringType(thing.important)">Hey guy im a string</p>

控制器

$scope.checkStringType = function(val){
     return typeof val === 'string'; //preferred way to achieve this thing.
};

我不确定你是如何传递 JSON 的,但你需要先解析它...

假设我们将 de JSON 存储在一个变量中

var things = '{"thing":{"important":"a giant banana"} }'

然后我们需要在 HTML

中解析它
<p ng-show='typeof JSON.parse(things).thing.important ==="string"'>Hey guy im a string</p>