我有一个插入卡片的 AngularJS 小工具。我的目标是将它们存储在本地。我为卡片阵列解决了这个问题,但不适用于卡片内容,即“内容可编辑”你能帮我解决这个问题并给我一些最佳实践解决方案吗?
这是一个 Plunker(在 JS 中)(红色大按钮删除 localStorage。一定要打开一个宽窗口): http: //plnkr.co/edit/SlbWZ5Bh62MDKWViUsMr
这是我的代码(使用 CoffeeScript。对于 JS,请参阅上面的 Plunker):
这是用户输入的标记
<div class="card card-{{ card.color }}">
<header>
<p class="points" contenteditable></p>
<p class="number" contenteditable>#</p>
<h2 class="customerName" contenteditable>{{ card.customer.name }}</h2>
<h3 class="projectName" contenteditable>Project Name</h3>
</header>
<article>
<h1 class="task" contenteditable>Title</h1>
<p class="story" contenteditable>Description</p>
</article>
<footer>
<div class="divisions">
<p class="division"></p>
<button ng-click="deleteCard()" class="delete">X</button>
</div>
</footer>
</div>
<div class="card card-{{ card.color }} backside">
<article>
<h2 class="requirement">Requirements</h2>
<p contenteditable></p>
</article>
</div>
在这里,您可以看到我上面控制器中的卡阵列的 localStorage 设置:
Card = (@color, @customer) ->
$scope.cards = []
json = localStorage.getItem "cards"
getCards = JSON.parse(json) if json?
$scope.cards = $scope.cards.concat getCards if getCards?
$scope.reset = ->
localStorage.clear()
$scope.save = ->
cards = []
for card in $scope.cards
cards.push
color: card.color
customer:
name: card.customer.name
localStorage.setItem "cards", JSON.stringify(cards)
$scope.addCardRed = (customer) ->
$scope.cards.push new Card("red", customer)
$scope.save()
如何将用户输入存储在 localStorage 的不同字段中?我听说过一些关于序列化的事情,但我不知道这对我来说意味着什么!
非常感谢您!