我有一個插入卡片的小AngularJS工具。 我的目標是將它們存儲在本地。我爲卡片陣列工作過,但不是卡片內容,這是「contenteditable」 你能幫我解決這個問題,並給我一些最佳實踐解決方案嗎?Contenteditable內容的LocalStorage(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設置的卡ARR的標記唉,這是在我的控制器上面:
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的不同領域用戶的輸入?我聽說了一些關於序列化的內容,但我不知道這對我來說意味着什麼!
非常感謝你提前!
我仍然不確定如何執行它。你能給我另一個提示嗎?我是否必須在Card對象或外部附加模型?你能否給我舉一個例子,說明我如何存儲我的內容?不知何故,我還沒有完全理解整個localStorage和序列化的工作原理: - /如果你能幫助我,我將非常感激!非常感謝您提前! – christophe
我添加了很多更多的解釋,使我以前的答案更詳細。如果您仍然感到困惑,請告訴我。 – tennisgent
你太棒了!感謝您的新回覆。現在我明白了很多。仍然會導致頭痛的是如何使用卡陣列propery,因爲有些數據已經存在,當我添加一張新卡時,並且在用戶放入某些東西后卡數組的某些數據會被添加。另外,卡數組你在上面填充它)首先是空的,對嗎?我的空卡陣列如何與客戶的已設定值一起玩? 至少我明白$ watch和存儲的東西,謝謝:) – christophe