我有一个相当简单的 2 页网络应用程序。使用 Angular 和 Lawnchair。我有一个登录页面,在用户通过身份验证并提取相关数据之前,我不希望从该页面更改屏幕/视图。此外,这是一个移动应用程序。所以用户可能只需要重新认证并从浏览器加载他们的数据。
<!DOCTYPE html>
<html xmlns:ng="http://angularjs.org" ng:app="AppMod">
<head>
...
</head>
<body ng:controller="AppCtrl">
<ng:view></ng:view>
...
</body>
</html>
当我在没有适配器的情况下使用 Lawnchair 时,Angular 可以很好地更改视图,并且 Lawnchair 将数据保存在浏览器中,但不会保存到像 WebSQL 或 IndexedDB 这样的永久性东西。但是,一旦包含一个或多个 Lawnchair 适配器,在最坏的情况下视图将不会显示,或者在最好的情况下它将更新位置/URI 而不更改视图(直到发出另一个事件,如“更改”)。
$scope['login'] = function()
{
AuthSvc.query(
{'username':$scope['username'], 'password':$scope['password']},
function( results )
{
LastUsedRsc.save({'key':'credentials', 'value':
{'username':$scope['username'], 'password':$scope['password']}});
$location.path( '/dataset' );
},
function( error )
{
alert( "Incorrect username and/or password." );
});
return( false );
};
我已经尝试过 $scope.$apply()、$scope.$digest()、它们各自的“安全”包装器等。这是一个JSFiddle供您查看。如果您删除 Manage Resources 下的 Lawnchair 适配器并再次运行 fiddle,您将看到视图将开始工作,但 Lawnchair 现在一文不值,因为没有任何东西真正持久化。使用 Lawnchair 的适配器之一时,我需要做什么才能更改视图?