2015-10-18 14 views
1

我正在开发一个聊天应用程序。 我的下一个HTML:使用AngularJS和ng-storage进行会话存储

<input type='text' id='nameInput' placeholder='Your Name'>

我还与AngularJS的工作,这是我的模块:

var app = angular.module('principal', ['ngStorage']); 
app.controller('MainCtrl', function($scope, $sessionStorage) { 
    $scope.$storage = $sessionStorage.$default(#nameInput); 
}); 

正如你所看到的,我有ngStorage作为一个依赖。 我想sessionStorage的输入值,所以如果用户意外刷新页面,他的名字仍然写在输入,但我的代码不起作用,我能做什么?

UPDATE 现在,谢谢马特,我解决了我的疑问。

回答

1

您需要将您的视图(本例中为输入元素)绑定到模型中的值。你使用ng-model来做到这一点。例如:

<input type="text" ng-model="state.nameInput" placeholder="Your Name"> 

然后你只需要在你的控制器中设置你的范围。

$scope.state = { 
    nameInput: 'John' 
}; 

如果你想,而不是想用ngStorage作为绑定(而不是常规的$范围值),尝试在你的控制器中的以下内容:

$scope.$storage = $sessionStorage.$default(/* any defaults here */); 

而在你的HTML

<input type="text" ng-model="$storage.nameInput" placeholder="Your Name"> 

基本上,你是什么卅一ng是;将$sessionStorage对象直接放在$scope上,以便该视图可以引用它及其子。然后你告诉<input>你希望它的价值是使用ng-model引用该范围上的某个特定的孩子。因此,当您更改输入值时,它将更改范围模型值,从而更新会话存储。

+0

好的,我明白了。但我认为缺少一些东西。这是我更加解释的疑问: 1.用户进入我的页面并看到输入。 2.他写下他的名字。 3.不小心刷新了页面。 4.即使如此,他的名字仍然写在输入中。 这是对我怀疑的一个很好的解释吗? –

+0

在你担心你的例子会发生,还是不会发生?因为如果你将绑定到会话存储是应该坚持。如果你想删除它,你需要在某个时候手动清除它。 –

+0

我不想发生。 –