在按下按钮之前,不会正确显示角度变量

时间:2015-02-27 13:38:50

标签: javascript angularjs angularjs-scope ionic-framework ionic

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

4 个答案:

答案 0 :(得分: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>

答案 1 :(得分:-1)

我不知道$ionicPlatform,但$scope.$apply();可以解决您的问题,但似乎只有$scope.initApp();

如果有帮助,请告诉我。

答案 2 :(得分:-1)

不要使用$ scope。$ apply()。 $ ionicPlatform是一个角度模块,这里不需要“应用”。

如果在离线就绪上真正调用就绪函数,请使用console.log进行调试。

答案 3 :(得分:-1)

我认为最好发布html代码,或者至少告诉我们是否在单击按钮时调用了initApp()函数,或者某个其他函数是否绑定到此按钮。 如果它在TimerCtrl的范围内,应该调用initApp(),否则可能是$ ionicPlatform就像[here]一样准备好了吗?1