2015-04-01 38 views
0

我跟隨this guide執行身份驗證到我的Angular應用程序,我無法訪問我的控制器內的模型。

在我的應用程序

地方,我打開模態窗口是這樣的:

loginModal().then(function() { 
    // Successful login, proceed to the page the user wants 
    return $state.go(toState.name, toParams); 
}).catch(function() { 
    // Login failed, return home 
    return $state.go('home'); 
}); 

loginModal()是一種服務,它看起來像這樣:

myApp.service('loginModal', function($modal, $localStorage) { 
    function assignCurrentUser(user) { 
     $localStorage.user = user; 
     return user; 
    } 

    return function() { 
     var instance = $modal.open({ 
      templateUrl: '/partials/modals/login.html', 
      controller: 'LoginController', 
      windowClass: 'small' 
     }); 

     return instance.result.then(assignCurrentUser); 
    }; 
}); 

當使用loginModal()服務,它打開包含/partials/modals/login.html文件的HTML頁面上的模式窗口。這一切都完美。您會注意到,我還指定要在模式中使用的控制器:LoginController

LoginController寫爲這樣:

myApp.controller('LoginController', function($scope) { 
    $scope.login = function() { 
     console.log($scope.user); 
    }; 
}); 

,最後,這是在模態窗口中使用的部分:

<form name="loginForm" novalidate method="post" ng-submit="login();"> 
    <label>Email address 
     <input type="email" name="email" ng-model="user.email"> 
    </label> 
    <label>Password 
     <input type="password" name="password" ng-model="user.password"> 
    </label> 
    <input type="submit" value="Login"> 
</form> 

的問題是,當我填寫表格(通過填充user.emailuser.password)並單擊提交按鈕,我將undefined打印到控制檯。

基本上,從我LoginController$scope.login功能確實得到執行,但$scope.user屬性未定義即使它應該通過形式在窗口模式來填充(使用的ng-model S)。

此外,如果我將{{user.email}}放入模態模板中,然後填充電子郵件字段,它將打印。所以我知道雙向數據綁定的作品。

爲什麼我無法從控制器內的模態窗口訪問$scope值?

+0

解決了這個問題,或者您仍然需要任何東西? – 2015-04-05 07:26:27

回答

0

現在不要現在,如果它有幫助,但我有這樣的路由問題。 解決方案是使用ng-model="$parent.user.name"$parent添加到控制器中的依賴關係列表中,並使用$scope.$parent.user.email 或僅僅$scope.user.email調用它,有時它有效。 希望對你有所幫助。

+0

不,沒有任何工作:(儘管我想你可能會推動我在正確的方向弄清楚這一點! – 2015-04-01 17:45:50