【问题标题】:angularJs : how to load table data after clicking a button?angularJs:单击按钮后如何加载表格数据?
【发布时间】:2015-09-07 07:46:39
【问题描述】:

大家好,如果我的问题太长,我很抱歉,这是我在 Stack over flow 中的第一个问题 :) ;我是 angularJs 的新手,所以我面临这个问题 我试图制作一个按钮,将我通过 http.get 函数检索到的 json 数据加载到带有 ng-repeat 的表中 我想在单击按钮后加载数据

角度:

app.controller('dayRecord', function ($scope, $http) {
    var date = dateToString("dailyData")
        ,http;
    $scope.headers = ["company", "ticker", "ccy", "last", "close", "chg", "bid", "ask", "trades", "volume", "turnover"];
    //LoadDate : function to load StockRecords for a given day
    $scope.loadData = function () {

        http = "http://localhost:63342/nasdak/app/data?date=";//the REST service Server to fetch the day stock recrod json data
        http += date; //
        $http.get(http)
            .success(function (response) {
                console.log(response);

                $scope.first = response.balticMainList;
                $scope.columnSort = {sortColumn: 'turnover', reverse: true};
            });

    }
    $scope.loadData();
});

正如你在这里看到的: dayRecord 控制器 获取json数据的loadData函数

这是我试图加载的表格的 html 代码

HTML

<div ng-controller="dayRecord" style="display: inline;">
        <label for="dailyData">Show Stock For Day :</label>
        <input type="text" id="dailyData" name="dailyData" >
        <button id = "dailyStocksLoad" ng-click="loadData()">load</button>
    </div>
<div class ="dailyViewContainer" ng-controller="dayRecord">

    <div >
        <h1>Baltic Main List</h1>
        <table id ="myTable" >
            <thead>
            <tr >
                <th  ng-repeat="header in headers " ng-click="columnSort.sortColumn=header;columnSort.reverse=!columnSort.reverse">{{header}}</th>
            </tr>
            </thead>
            <tbody>
            <tr ng-repeat="x in first | orderBy:columnSort.sortColumn:columnSort.reverse">
                <td style="text-align: left">{{ x.company }}</td>
                <td>{{ x.ticker }}</td>
                <td>{{ x.ccy }}</td>
                <td>{{ x.last }}</td>
                <td>{{ x.close }}</td>
                <td>{{ x.chg }}% </td>
                <td>{{ x.bid }}</td>
                <td>{{ x.ask }}</td>
                <td>{{ x.trades }}</td>
                <td>{{ x.volume }}</td>
                <td>{{ x.turnover }}</td>
            </tr>
            </tbody>
        </table>
    </div>

当我调用控制器内部的函数时,一切正常

 app.controller('dayRecord', function ($scope, $http) {
        ...
        $scope.loadData = function () {
        ...
        }
        
        
        $scope.loadData();
    });

但是当我单击按钮动态加载数据时,我无法加载它,我什至使用 console.log(response) 检查了响应,它显示 http.get 正在检索数据,但它没有在表上刷新它

【问题讨论】:

  • 添加有问题的示例 json 数据

标签: javascript html json angularjs


【解决方案1】:

Angular 可能需要一些帮助来更改 DOM。尝试将 $scope.$apply() 添加到加载数据函数的末尾,看看控制台上会发生什么。

【讨论】:

【解决方案2】:

嗯,问题可能是您将 2 段 html 分配给同一个控制器。将整个 html 包装成 1 个 div 元素并将 ng-controller 放在那里怎么样:

<div ng-controller="dayRecord">
  <div style="display: inline;">
    <label for="dailyData">Show Stock For Day :</label>
    <input type="text" id="dailyData" name="dailyData" >
    <button id = "dailyStocksLoad" ng-click="loadData()">load</button>
  </div>
  <div class ="dailyViewContainer">

  <div >
    <h1>Baltic Main List</h1>
    <table id ="myTable" >
        <thead>
        <tr >
            <th  ng-repeat="header in headers " ng-click="columnSort.sortColumn=header;columnSort.reverse=!columnSort.reverse">{{header}}</th>
        </tr>
        </thead>
        <tbody>
        <tr ng-repeat="x in first | orderBy:columnSort.sortColumn:columnSort.reverse">
            <td style="text-align: left">{{ x.company }}</td>
            <td>{{ x.ticker }}</td>
            <td>{{ x.ccy }}</td>
            <td>{{ x.last }}</td>
            <td>{{ x.close }}</td>
            <td>{{ x.chg }}% </td>
            <td>{{ x.bid }}</td>
            <td>{{ x.ask }}</td>
            <td>{{ x.trades }}</td>
            <td>{{ x.volume }}</td>
            <td>{{ x.turnover }}</td>
        </tr>
        </tbody>
    </table>
  </div>
</div>

【讨论】:

  • 感谢您的帮助,但它没有用,我仍然卡住了。
  • 又一次尝试成功了,你太棒了,谢谢:)
猜你喜欢
  • 2019-09-09
  • 1970-01-01
  • 2012-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多