更改$ scope数据后刷新视图

时间:2017-02-02 19:41:18

标签: javascript angularjs express mean-stack

我知道有一些类似的问题,但我对任何答案都没有成功,没有一种情况看起来完全相似。我对Angular很陌生,我知道这里的整个过程并不是最优的,但我觉得我已经接近完成至少一个可以改进的工作原型了:

我正在尝试创建一个在服务器上按计划执行脚本的应用程序,因此在后台我们有以下代码发送请求以运行计划每5秒运行一次的所有文件。脚本执行并更新mongo数据库 - 每个"测试"有一系列"结果"。每次执行脚本时,都会出现一个新的"结果"创建并推送到test.results数组。

public static void weboscio(String args[]) {
        home something = new something();
        something.web();
        new something().warning();

在Angular端,有一个页面显示test.results中的所有结果。当页面首次加载时,它会查找当前测试,并将其作为状态参数:

var interval  = 5000;
setInterval(function() {
 request.get(
    'http://localhost:3000/tests/run/5000',
    function (error, response, body) {
        if (error) { return next(err) }
    }
);
}, interval);

呈现视图:

// The apps state, displays the selected "test", and lists results for the test.
      .state('tests', {
        url: '/tests/{id}',
        templateUrl: '/tests.html',
        controller: 'TestsCtrl',
        resolve: {
          test: ['$stateParams', 'tests', function($stateParams, tests) {
            return tests.get($stateParams.id);
          }]
        }
      })

除了我无法手动刷新页面而无法更新视图外,所有这些都运行良好。现在我只想在控制器中创建一个类似的计时器,它按计划重新加载测试参数。 (即现在,如果更新恰好在添加新结果时发生并不重要,我只希望视图定期更新新测试。)我最接近的似乎是:

<script type="text/ng-template" id="/tests.html">
  <div class="page-header">
    <h1>{{test.name}} | Results</h1>
  </div>


  <div ng-repeat="result in test.results">
     <h4>{{result.timestamp}} | <span ng-class="result.passed"}">{{result.passed}}</span></h4>
     <h5>Output:</h5>
     <p style="white-space: pre;">{{result.output}}</p> <!--white-space:pre to preserve formatting (ie \n's)-->
     <h5 style="color:red";>Errors:</h5>
     <p style="white-space: pre;">{{result.error}}</p>
  </div>

<!-- ... -->

所以我试图只是做一个新的get请求来从db中检索最新数据,该数据应该包含任何新添加的结果&#39;。我没有收到任何错误,但显示的当前结果列表消失了,一旦此代码运行,我就没有数据显示在视图中。

感谢任何帮助。

0 个答案:

没有答案