在创建JSON对象Angular.js之后设置值

时间:2015-04-27 22:15:11

标签: javascript json angularjs

我在为我正在制作的小部件设置一些值时遇到了一些麻烦。我正在使用臭氧小部件框架,但这部分对于此讨论可以忽略不计。这里是我想要设置变量的html(现在只关注{{user.user}}部分。

<div class="col-lg-12">
    <p>User: {{user.user}}</p>
    <table class="table table-bordered table-hover table-striped">
        <thead>
            <th>#</th>
            <th>Model</th>
            <th>Score</th>
            <th>Date</th>
        </thead>
        <tr data-ng-repeat=" item in records | orderBy : '-score' | limitTo : 10 " ng-click="">
            <td>{{$index+1}}</td>
            <td>{{item.model}}</td>
            <td>{{item.score}}</td>
            <td>{{item.date}}</td>
        </tr>
    </table>
</div>

以下是Angular / owf:

angular.module('myapp', ['cgOwf'])
  .controller('MainCtrl', function($scope, $http, owf) {
    var records;
    $scope.selectPost = '';
    $scope.searchText = ''; 
    console.debug("before IT HERE!!!");
   owf.ready(function(){
       console.debug("MADE IT HERE!!!");
      owf.Eventing.subscribe('user-status', function(sender, msg, channel) {
          console.debug('[%s] - received message %o', channel, msg);
          $scope.user = msg;
      });
   });

    $scope.search = function() {
      //clear the select, go here http://jsonplaceholder.typicode.com/comments
      //and display/filter emails based on the search input
      $scope.selectPost = "";
      $scope.selectedItem = null;
      $http.get('https://api.myjson.com/bins/1jvst').success(function(data2) {
        $scope.records = [];
        data2.forEach(function(r) {
          if (r && r.user && r.user.toLowerCase().indexOf($scope.searchText.toLowerCase()) !== -1) {
            $scope.records.push(r);
          }
        });
      });
    };

  });

我遇到问题的部分是$scope.user = msg;。在代码中的那一点,msg是一个JSON对象,我确信这是因为它在chrome中的js调试器中检出。 AFAIK是我如何设置对象所以我可以在html中访问它,虽然有些东西显然不起作用。

1 个答案:

答案 0 :(得分:1)

owf事件可能不会触发$digest周期,因此视图永远不会更新。您可以运行$scope.apply()来强制$digest

owf.Eventing.subscribe('user-status', function(sender, msg, channel) {
      console.debug('[%s] - received message %o', channel, msg);
      $scope.$apply(function() {
          $scope.user = msg;
      });
});