使用Angular存储用户以前是否选中过复选框,然后再调用它的最佳方式是什么
Using Angular what would be the best way to store whether a user has previously checked a checkbox and then recall it?
我是一个新手,在开发web应用程序的同时学习angular。该应用程序类似于todo列表(足球队检查表),用户将首先选择一个联赛(共有4个)来浏览菜单,然后应用程序将获取该选择的ID,并根据选择的ID对JSON文件发出http请求来加载下一页(希望这有意义)。下一页是复选框所在的位置,其中包含该联盟的球队列表,用户只需勾选他们在该足球赛季访问过的所有足球场。
这一切都很好,但是我如何存储用户是否使用localStorage签出了团队,然后在页面加载时检索它?
我最初使用的是ng-change()方法,但它为每个联盟调用相同的球队,因为我从localStorage调用相同的数据,而不是根据ID调用JSON文件,这在我完成后是有意义的。
如有任何建议或帮助,我们将不胜感激!
包含团队和检查表的HTML:
<ul class="list-unstyled">
<li ng-repeat="club in league" ng-click="selectClub(club.id)">
<input type="checkbox" ng-model="club.done">
<a href="#/team">{{club.club}} - {{club.ground}}</a>
</li>
</ul>
获取联盟ID并加载数据的控制器:
trackerControllers.controller('ClubCtrl', ['$scope', '$http', function($scope, $http) {
var leagueId=sessionStorage.getItem("leagueId");
$http.get('JSON/Leagues/league'+leagueId+'.json').success(function(data) {
$scope.league = data;
});
}]);
如果我能做些什么让这个问题更清楚,请提出建议。谢谢
为了更好地了解该网站,以下是新网站的链接-http://helios.hud.ac.uk/u1170593/MyApp/index.html#/league
还有一个链接,指向存储-http://helios.hud.ac.uk/u1170593/version1/index.html
倾听每个俱乐部复选框的变化。只要输入发生更改,就更新localStorage。
<ul class="list-unstyled">
<li ng-repeat="club in league" ng-click="selectClub(club.id)">
<input type="checkbox" ng-model="club.done" ng-change="updateClub(club)">
<a href="#/team">{{club.club}} - {{club.ground}}</a>
</li>
</ul>
$scope.updateClub = function (club) {
var key = 'clubId-' + club.id;
if (club.done) {
localStorage.setItem(key, 'viewed');
} else {
localStorage.removeItem(key);
}
};
然后,当你加载数据时,检查每个俱乐部是否都被查看过。
trackerControllers.controller('ClubCtrl', ['$scope', '$http', function($scope, $http) {
var leagueId=sessionStorage.getItem("leagueId");
$http.get('JSON/Leagues/league'+leagueId+'.json').success(function(data) {
var i;
for (i = 0; i < data.length; i++) {
// check if this team has been viewed
data[i].done = localStorage.getItem('clubId-' + data[i].id) === 'viewed';
}
$scope.league = data;
});
}]);
应用程序将获取该选择的ID并加载下一个通过对JSON文件发出http请求
Angular的美妙之处在于,你实际上不会像传统网站那样加载下一个页面。但它会根据用户交互在"同一个url"上呈现不同的模板/视图。
正因为如此,您不需要"传递"变量,只需存储即可。例如:
用户交互:
$scope.leagueId = 1;
由于作用域已传递给控制器。您可以在范围内调用联盟ID。
$http.get('JSON/Leagues/league'+$scope.leagueId+'.json').success(function(data) {
$scope.league = data;
});
此外,我建议使用某种数据库来存储数据,并使用查询根据输入参数反馈正确的数据。并从服务或工厂调用您的数据,而不是从控制器调用。
编辑:
我重读了这个问题,并假设您希望保存用户输入(无限期?)。
在这种情况下,你肯定需要一些数据库存储和登录功能。因为你需要知道你在和哪个用户打交道。因此,u需要一个用户表和一个定义哪个用户执行了哪些操作的表。
优选:
- 用于存储用户和密码的用户表(用于登录)
- 定义用户可以执行的操作的操作表
- 用户操作表,用于存储哪个用户执行了哪些操作
$作用域不起作用,因为一旦用户关闭浏览器,它就会终止。将其存储在会话中是不起作用的,因为一旦会话过期,您的用户输入就会丢失。使用cookie也不起作用,因为就像会话一样,它会跟踪每台计算机的数据。因此,如果您的用户使用另一台计算机,则数据将不可用。
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 使用Angular存储用户以前是否选中过复选框,然后再调用它的最佳方式是什么
- 选择值,然后只调用函数
- 如何用javascript调用函数,然后在滚动事件中调用该函数的特定实例
- 文件上传:检查文件格式,然后调用srvlet
- 如何使用javascript验证表单中的数据,然后调用php页面
- 剑道窗口还原在最小化然后还原时不调用调整大小事件
- 加载文件,然后调用回调函数
- Angular$http然后解析_.each中的多个调用
- 当调用.of()然后调用.on()时,Jquery是否可能将事件推迟
- 通过 AJAX 调用 PHP 文件,将 $_GET 变量传递到 MySQL 查询中,然后回显到响应中
- 运行一次函数,然后在 5 秒内禁止进一步调用
- 如何每 10 秒调用一次 JS 函数,然后以角度激活一个函数
- 在每个循环上完成异步调用,然后转到下一个节点 js
- 从异步调用返回数组,然后为数组的每个元素返回其他异步调用
- 如何运行一个调用某个函数的函数首先完成它,然后再调用下一个函数.正在创建回调函数
- Javascript Promise().然后防止在执行第一个调用之前重新调用该函数
- 谷歌分析调用然后用javascript重定向
- AngularJS工厂调用PHP,然后返回AngularJS
- 在同一个元素上调用c#然后调用js