AngularJS-点击对象,访问它's ID&以该ID作为参数激发函数
AngularJS - Click on object, access it's ID & fire a function with that ID as parameter
我正在尝试构建一个网络应用程序,类似于简单iPhone布局的副本,只有主屏幕(显示"已安装"的应用程序)和显示所有可用应用程序的应用程序商店。
当你在应用商店中点击一个应用时,我想访问该应用(div)的ID,并启动一个函数,将ID作为参数发送。函数应该简单地将ID添加到一个数组中,并可能(如果可能)链接到另一个页面。
到目前为止,我的模型中有这个:
var dummyApp = angular.module("dummyApp", [ "ngRoute"]);
.controller('appController', ['$scope', function($scope) {
$scope.homeApps = [
{id:"1", name:"Dummy", link:"#/"},
{id:"2", name:"Dummy", link:"#/"}];
$scope.allApps = [
{id:"1", name:"Dummy", link:"#/"},
{id:"2", name:"Dummy", link:"#/"},
{id:"3", name:"Dummy", link:"#/"}];
$scope.addApp = function(id) {
$scope.homeApps.push({id:id, name:"new app", link:"/#/"});
};
}]);
简而言之,我想点击一个元素(allApps数组的一部分),发送addApp函数并提供ID(如果可能的话,可能取自allApps阵列?),然后将其推送到homeApps(应用程序到主屏幕)
这应该模拟按下一个应用程序,然后当你回到主屏幕时,它会像数组中一样出现在那里。
我的HTML看起来是这样的:
<div ng-click="adApp('3');" class="app" style="background-image:url('icons/{{app.id}}.png');">
</div>
现在我只是发送一个静态的"3"作为ID,但你明白了:)
有任何帮助通知!
您非常接近,只需将ng-click="addApp(app.id)"
用于div
。
但你遇到的实际问题是,通过对两条路线使用相同的控制器,并且没有在主屏幕上存储应用程序集合的共享位置,你最终会在主屏幕中重复创建同一组原始应用程序。
相反,你需要做的是创建某种Angular服务,它将被正确初始化,然后允许添加应用程序。这将被注入到appController
中,这样您每次都可以访问同一个集合,而不是每次运行控制器时都创建一个新的集合。
你可以看到我创建的Plunkr,它展示了一个非常简单的例子。
代码的核心如下:
创建基本服务:
(function (dummyApp) {
var homeApps = [
{id:"1", name:"Dummy", link:"#/"},
// ...
{id:"10", name:"Dummy", link:"#/"}];
dummyApp.factory('homeApps', function () {
return homeApps;
});
})(dummyApp);
然后在你的控制器中使用它:
dummyApp.controller('appController', ['$scope', 'homeApps', function($scope, homeApps) {
$scope.homeApps = homeApps;
$scope.allApps = [
{id:"1", name:"Dummy", link:"#/"},
// ...
{id:"28", name:"Dummy", link:"#/"}];
$scope.addApp = function(id) {
homeApps.push({id:id, name:"new app", link:"#/"});
};
}]);
当然,我可能会创建一些"类"(好吧,相当于JS),以公开一个很好的API来操纵每个应用程序,以及一个允许您从其自身添加和删除应用程序的集合。然后创建一个公开此API的homeScreen
服务。但这取决于你。这会让你开始。
- 对id以某个字符串开头的元素进行计数
- 如果元素's的ID以数字开头
- 从模型传递id以查看Backbone.js
- AngularJS-点击对象,访问它's ID&以该ID作为参数激发函数
- 检测单击的链接的 ID 以更改链接的去向
- 使用MeteorJS堆栈,如何使用对象的id返回该对象的属性
- 在jquery中选择id以字符串开头的元素
- 我想单击一个
- 并获取 id 以通过 POST 将其插入数据库,可以吗?
- 传递数据 id 以引导模式并使用它 iframe url
- jQuery 选择 # id 以 word 作为前缀,计数器作为后缀
- 无法在 jquery .append() 方法中的按钮中添加类或 id 以制作有效的按钮
- 如何选择当前 DIV ID 以使用该 ID 运行 Jquery
- 使用函数按间隔调用自身,增加变量,并设置 id 等于该变量的元素的类值
- 如何使用挖空 Js 获取当前行的 Id 以隐藏删除按钮
- 如果条件表达式,如何确定输入字段类型“submit”的当前 ID 以在 PHP 中使用
- 使用 JavaScript 变量来引用 ID 包含该变量的元素
- 如何获取操作 ID 以删除以前在时间线上发布的操作
- 如果 ID 以前缀开头,则 JQuery 替换 html 元素内容
- 尝试更新vimeo-regex以从URL获取ID,该URL包括“;频道/工作人员挑选”;
- 如何使用JQuery来处理链接上的点击,该链接的id以特定字符串开头