我跟隨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.email
和user.password
)並單擊提交按鈕,我將undefined
打印到控制檯。
基本上,從我LoginController
的$scope.login
功能確實得到執行,但$scope.user
屬性未定義即使它應該通過形式在窗口模式來填充(使用的ng-model
S)。
此外,如果我將{{user.email}}
放入模態模板中,然後填充電子郵件字段,它將打印。所以我知道雙向數據綁定的作品。
爲什麼我無法從控制器內的模態窗口訪問$scope
值?
解決了這個問題,或者您仍然需要任何東西? – 2015-04-05 07:26:27