1

я создаю простой пример того, что я собираюсь сделать:данные OnsenUI AngularJS связывание не работает должным образом

ons.bootstrap() 
 
    .controller('AppController', function($scope) { 
 
    $scope.x = 0; 
 
    setInterval(function() { 
 
     $scope.x = $scope.x + 1; 
 
    }, 500) 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<script src="https://cdnjs.cloudflare.com/ajax/libs/onsen/1.3.15/js/onsenui.min.js"></script> 
 

 
<ons-page ng-controller="AppController"> 
 
    <ons-list> 
 
    <ons-list-header>Switch</ons-list-header> 
 
    <ons-list-item> 
 
     <br/> 
 
     This value should change every 500 milisecond: {{ x }} 
 
     <br/> 
 
    </ons-list-item> 
 
    <ons-list-item> 
 
     <div class="center"> 
 
     Switch is {{ switch ? 'on' : 'off' }} 
 
     </div> 
 
     <div class="right"> 
 
     <ons-switch ng-model="data.switch"></ons-switch> 
 
     </div> 
 
    </ons-list-item> 
 
    </ons-list> 
 
</ons-page>

Как нормальный угловой (с two-way data binding) применение каких-либо изменений в контроллере приведет к обновлению вида и наоборот. Но в сочетании с OnsenUI просмотр обновления происходит только при изменении одного компонента onsen, который обновляет представление. есть ли способ проинформировать onsen о том, что произошло (необходимо просмотреть Update).

+0

использовать '$ interval' вместо функции setInterval()' – Girish

ответ

1

попробовать, как этот

ons.bootstrap() 
.controller('AppController', function($scope) { 
$scope.x = 0; 
    setInterval(function() { 
    $scope.$evalAsync(function() { 
       $scope.x = $scope.x + 1; 
      }); 

}, 500) 
}); 

Edit:

Или использовать $interval как сказал @Pankaj Parkar как this.before использования $interval вы должны внедрить эту услугу в контроллере.

$interval(function() { 
    $scope.x = $scope.x + 1;    
}, 500); 
+0

почему бы не '$ interval'? вместо '$ evalAsync' внутри' setInterval' –

+0

Я думаю, что '$ evalAsync' лучше, чем' $ interval' для производительности. может быть! –

+1

@evalAsync не будет быстрее, AFAIK '$ applyAsync' (угловой 1.3+) будет работать хорошо .. Идеально правильным решением было бы использовать только' $ interval'. –