2015-04-27 2 views
0

У меня возникли проблемы с установкой некоторых значений для виджета, который я создаю. Я использую структуру виджета Ozone, но эта часть пренебрежимо мала для этого обсуждения. . Здесь нам HTML, где я пытаюсь установить переменную (на данный момент просто сосредоточиться на {{user.user}} частиЗадайте значения после создания объекта JSON Angular.js

<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> 

А вот Угловое/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); 
      } 
     }); 
     }); 
    }; 

    }); 

Часть I У меня проблема с $scope.user = msg;. В этот момент кода msg является объектом JSON, и я уверен в этом, потому что он проверяет в js-отладчике в chrome. AFAIK - это то, как я бы установил объект, чтобы я мог получить доступ это в html, хотя что-то явно не работает.

+0

Это 'owf' событие, запускающее' $ digest' цикл? Попробуйте '$ scope. $ Apply()' после установки значения; – tymeJV

+0

Спасибо, но это не помогло – erp

+0

Совместим ли ваш контроллер с видом? Получаете ли вы что-нибудь, если вы просто {{user}}? – Asta

ответ

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; 
     }); 
}); 
+1

Также очистите кеш;) – erp

Смежные вопросы