如何在node.js“html页面”中显示json字符串化数组数据?

Posted

技术标签:

【中文标题】如何在node.js“html页面”中显示json字符串化数组数据?【英文标题】:How to display json stringify array data in node.js "html page"? 【发布时间】:2018-03-15 19:28:13 【问题描述】:

我有一个 JSON 数据数组,它是来自 Clarifai 识别的 predict(...) 调用的响应,我正在尝试在我的 html 中显示数据数组。我使用ng-repeat 来显示数组,但它不起作用。如何在 HTML 中显示数组?下面是我的 JS 文件和 HTML 文件的代码 sn-p。

var app = angular.module("starter",['ionic']);
app.controller("myCtrl", function($scope,$rootScope) 
    const app = new Clarifai.App( apiKey: 'e7f899ec90994aeeae109f6a8a1fafbe' );
   
    $rootScope.records = [];

    // predict the contents of an image by passing in a url
    app.models.predict("pets",'https://samples.clarifai.com/puppy.jpeg').then(
        function(response) 
            // The JSON.stringify() method converts a javascript value to a
            // JSON string optionally replacing values if a replacer function
            // is specified, or optionally including only the specified
            // properties if a replacer array is specified.
            for(var i=0; i < 2; i++) 
                $rootScope.records[i] = JSON.stringify(response.outputs[0].data.concepts[i].name);
                console.log(`module concept = $$rootScope.records[i]`);
                alert($rootScope.records[i]);
            
        ,
        function(err) 
            console.error(err);
        
    ); 
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.min.js"></script>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
    <title></title>

    <link rel="manifest" href="manifest.json">

    <!-- un-comment this code to enable service worker
    <script>
        if ('serviceWorker' in navigator) 
            navigator.serviceWorker.register('service-worker.js')
                .then(() => console.log('service worker installed'))
                .catch(err => console.log('Error', err));
        
    </script>-->

    <link href="lib/ionic/css/ionic.css" rel="stylesheet">
    <link href="css/style.css" rel="stylesheet">

    <!-- IF using Sass (run gulp sass first), then uncomment below and remove the CSS includes above
    <link href="css/ionic.app.css" rel="stylesheet">
    -->
    <script type="text/javascript" src="https://sdk.clarifai.com/js/clarifai-latest.js"></script>
    <!-- ionic/angularjs js -->
    <script src="lib/ionic/js/ionic.bundle.js"></script>

    <!-- cordova script (this will be a 404 during development) -->
    <script src="cordova.js"></script>

    <!-- your app's js -->
    <script src="js/app.js"></script>
</head>
<body ng-app="starter"ng-controller="myCtrl">
    <ion-pane>
        <ion-header-bar class="bar-stable">
            <h1 class="title">Ionic Blank Starter</h1>
        </ion-header-bar>
        <ion-content>
            <h1 ng-repeat="x in records">x</h1>
        </ion-content>
    </ion-pane>
</body>
</html>

【问题讨论】:

【参考方案1】:

我建议手动触发摘要循环,因为您的 predict 调用是异步的。

// add a reference to $timeout
app.controller("myCtrl", function($scope, $rootScope, $timeout) 
    // ...

    // predict the contents of an image by passing in a url
    app.models.predict("pets",'https://samples.clarifai.com/puppy.jpeg').then(
        function(response) 
            for(var i=0; i < 2; i++) 
                $rootScope.records[i] = JSON.stringify(response.outputs[0].data.concepts[i].name);
                console.log(`module concept = $$rootScope.records[i]`);
                // add the following $timeout call to manually trigger a digest cycle
                $timeout(() => ); /* OR */ $scope.$digest();
            
        ,
        function(err) 
            console.error(err);
        
    ); 
);

【讨论】:

另外,您可以使用$scope.$digest(),而不是使用$timeout 函数 -> 请参阅我对这个问题的回答:***.com/questions/42620655/… 是的,也是。 @Ghassen Louhaichi 我还有一个关于 Angular js 的问题,你可以给我发电子邮件吗 此处不宜粘贴个人信息,建议您新建一个问题并将链接粘贴至此处。或者如果它与这个问题有关,你可以编辑这个。 只需在此处或问题中添加评论,表明您已使用新问题对其进行了编辑。

以上是关于如何在node.js“html页面”中显示json字符串化数组数据?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Node.js 和 Express 将 JSON 数据集显示为表格

JSON+Node.js - 意外的令牌 o

Node.js app.js 不显示 HTML 页面,而是显示 HTML 代码

MySQL 结果来自 html 中的 node.js,由 react.js

如何使用 node.js 访问 json 对象的子元素

如何像使用 PHP 一样在我的 HTML 页面中运行 Node.js 脚本?