0

我正在Visual Studio中使用漣漪運行應用程序。 JS開發人員工具在添加新頁面後顯示以下錯誤。哪一行導致錯誤?添加新頁面後無法設置未定義的屬性「登錄」?

ionic.bundle.js:25642 TypeError: Cannot set property 'login' of undefined 
    at new <anonymous> (http://localhost:4400/js/controllers.js:10:18) 
    at invoke (http://localhost:4400/lib/ionic/js/ionic.bundle.js:17762:17) 
    at Object.instantiate (http://localhost:4400/lib/ionic/js/ionic.bundle.js:17770:27) 
    at http://localhost:4400/lib/ionic/js/ionic.bundle.js:22326:28 
    at Object.self.appendViewElement (http://localhost:4400/lib/ionic/js/ionic.bundle.js:56883:24) 
    at Object.render (http://localhost:4400/lib/ionic/js/ionic.bundle.js:54995:41) 
    at Object.init (http://localhost:4400/lib/ionic/js/ionic.bundle.js:54915:20) 
    at Object.self.render (http://localhost:4400/lib/ionic/js/ionic.bundle.js:56743:14) 
    at Object.self.register (http://localhost:4400/lib/ionic/js/ionic.bundle.js:56701:10) 
    at updateView (http://localhost:4400/lib/ionic/js/ionic.bundle.js:62357:23) <ion-nav-view name="side-menu21" class="view-container" nav-view-transition="android"> 

我按照以下步驟添加了頁面。

controllers.js

.controller('LoginCtrl', ['client', function (client, $scope, $state) { 
    $scope.login = function() { 
     client.login("facebook").then(function succes(data){ 
      console.log('logged in succesfully..') 
      $state.go('menu.events'); 
     }, function(error){ 
      console.log('login failed.'); 
      //login failed. 
     }); 
    } 
}]) 

routers.js

.state('menu.login', { 
    url: '/login', 
    views: { 
     'side-menu21': { 
      templateUrl: 'templates/login.html', 
      controller: 'LoginCtrl' 
     } 
    } 
    }) 

service.js

.factory('client', [function() { 
    var client = new WindowsAzure.MobileServiceClient("https://mysite.azurewebsites.net/"); 
    return client; 
}]) 
; 

文件login.html已添加。

<ion-view view-title="Sign in"> 
    <ion-content> 
     <a class="item button button-block button-assertive" ng-click="login()"> 
      Sign In With Facebook 
     </a> 
    </ion-content> 
</ion-view> 

另外加入間<meta http-equiv="Content-Security-Policy" content="default-src data: gap: *; style-src 'self' 'unsafe-inline'; script-src: 'self' 'unsafe-inline' 'unsafe-eval'">和index.html中參考:<script src="js/azure-mobile-apps-client.min.js"></script>

回答

2

在你的控制器定義你寫

.controller('LoginCtrl', ['client', function (client, $scope, $state) {...})

我想這應該是作爲

.controller('LoginCtrl', ['client', '$scope', '$state', function (client, $scope, $state) {...})

希望這有助於!

0

您的client未定義。很可能(如果您可以使用開發人員工具)嘗試在頁面生命週期中儘早對其進行初始化。直到頁面onReady事件觸發後才能初始化客戶端。

我不是一個離子專家,但我相信$ionicPlatform.ready()是你需要看的東西。

相關問題