2015-02-27 3 views
-1

Я пишу мобильное приложение на AngularJS и ионном каркасе. Моя проблема в этом коде:Угловая переменная отображается неправильно, пока не нажмете кнопку

var App = angular.module('app', ['ionic']); 

App.controller('TimerCtrl', function($scope, $ionicPlatform) { 
    $scope.timer = {}; 
    $scope.timer.day = 0; 
    $scope.initApp = function() { 
      // some init variables and functions 
      $scope.timer.day = 145; 
      // other vars and funcs... 
    }; 
    $ionicPlatform.ready(function() { 
     $scope.initApp(); 
    }); 
}); 

Почему после запуска приложения {{timer.day}} равно 0? У меня есть кнопка, которая делает некоторые действия на странице. После того, как я нажимаю эту кнопку {{}} timer.day меняется на 145.

index.html Код:

<!DOCTYPE html> 
<html ng-app="app"> 
    <head> 
     <meta charset="utf-8" /> 
     <title>app</title> 

     <script type="text/javascript" src="lib/ionic/js/ionic.bundle.min.js"></script> 
     <script type="text/javascript" src="js/ng-cordova.min.js"></script> 
     <script type="text/javascript" src="cordova.js"></script> 
     <script type="text/javascript" src="js/app.js"></script> 
    </head> 
    <body ng-controller="TimerCtrl"> 
     <div id="main" class="padding"> 
        <div class="row"> 
         <div class="col col-75"> 
          <div>День {{timer.day}}</div> 
         </div> 
         <div id="buttons" class="col col-25"> 
          <button class="button icon ion-play button-clear timer-button" ng-click="startTimer()" ng-show="!timerStart"></button> 
         </div> 
        </div> 
     </div> 
     <div class="bar bar-footer"> 
      <button class="button icon ion-refresh" ng-click="showHardResetPopup()"></button> 
     </div> 
    </body> 
</html> 
+0

Что делает вид выглядеть? – beije

+0

объясните, пожалуйста. Я должен отправить index.html код? – mif

+0

чего вы пытаетесь достичь? –

ответ

-1

Я не знаю, но, кажется, $ionicPlatform но $scope.$apply(); после $scope.initApp(); может решить вашу проблему ,

Дайте мне знать, если это поможет.

-1

не использовать $ scope. $ Apply(). $ ionicPlatform - это угловой модуль, не нужно «применять» здесь.

отладить с помощью console.log, если функция готовности действительно называется ионной.

-1

Я думаю, что было бы лучше разместить html-код или, по крайней мере, определить, вызывается ли функция initApp() при нажатии кнопки или какая-либо другая функция привязана к этой кнопке. initApp() следует вызывать, если он находится в области TimerCtrl, иначе может быть $ ionicPlatform никогда не готовиться, как [здесь]? 1

+0

сообщение html code. кнопка выполняет некоторые действия, не связанные с timer.day var. – mif

0

Возможно, вам не нужно вызывать $ ionicPlatform.ready, потому что обычно используется для обертывания кода, который работает с некоторыми плагинами. Поэтому, на мой взгляд, вы должны попробовать что-то вроде этого: see this fiddle demo

var App = angular.module('app', ['ionic']); 

App.controller('TimerCtrl', function($scope) { 
    $scope.timer = {}; 
    $scope.timer.day = 0; 
    $scope.incrementDay = function() { 
     $scope.timer.day += 1; 
    }; 
    $scope.incrementDay(); // when the controller is loaded increment +1 day 
}); 

HTML:

{{timer.day}} 
<button class="button button-stable" ng-click="incrementDay()"> 
    Increment timer day 
</button> 
+0

Я также открываю модальное окно в функции initApp, поэтому мне нужно использовать ionicPlatform.ready(). Если я не использую его, модальное окно не открывается при запуске приложения. – mif

+0

Вы можете открыть модалы, не обертывая их в $ ionicPlatform.ready, но, может быть, лучше, если вы покажете свой код – manzapanza

+0

Я знаю, но если я не обертываю, тогда - http://stackoverflow.com/questions/28743467/how -в-шоу-ionicmodal-на-angularjs-приложение-старт – mif

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