【发布时间】:2015-12-06 23:10:03
【问题描述】:
我是 Angular JS 的新手。我正在创建一个将数据存储在网络存储中的应用程序。提交查询表单时,它会从 Web 存储中获取当前数组,对新的表单数据进行排序,将其添加到数组中,然后将其发送回 Web 存储。效果很好,所有内容都正确保存。
$scope.submit = function () {
// get object from form data
var formData = { firstName: $scope.firstName, lastName: $scope.lastName, date: getDateFromatted(), posted: false };
addStoredData(formData, ENQUIRY_STORE);
}
function getStoredData(storeName) {
// get or create enquiry store
var storedData = (typeof localStorage.getItem(storeName) !== 'undefined' && localStorage.getItem(storeName)) || "[]";
// parse store into object
storedData = JSON.parse(storedData);
return storedData;
}
function addStoredData(data, storeName) {
var storedData = getStoredData(storeName);
var count = storedData.length;
// form data into next submission slot
storedData[count] = data;
// turn back into JSON
storedData = JSON.stringify(storedData);
// slap it back in web storage
localStorage.setItem(storeName, storedData);
}
在我的 HTML 页面上有这个;
<table>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Date</th>
</tr>
<tr ng-repeat="e in enquiries">
<td>{{ e.firstName }}</td>
<td>{{ e.lastName }}</td>
<td>{{ e.date }}</td>
</tr>
</table>
所以我希望能够做到这一点......
// list of stored enquiries
$scope.enquiries = function () {
return getStoredData(ENQUIRY_STORE);
}
但它没有绑定,也没有行。如果我这样做......
$scope.enquiries = getStoredData(ENQUIRY_STORE);
它有效,但是当提交新查询时我必须继续设置它。也许 Anulgar 不允许您使用函数来返回数据以进行绑定,但我认为确实如此。
非常感谢任何帮助。谢谢。
【问题讨论】:
-
对我来说看起来很合乎逻辑。目前,当它是一个函数时,您不会触发 $scope.enquiries。
-
您应该首先将数据列表存储到 $scope 对象中,并确保您的“添加”和“删除”功能不仅会影响 localStorage,还会影响 $scope 对象。