appfactory(appfactory srl游戏)
tasker app factory怎么使用
Tasker的开发商Crafty Apps现在正在继续深入的开发Tasker App Factory的一项功能——能够让用户把一些能够实现一些功能的动作生成为一个独立的应用程序。
Tasker-1
这款应用(目前只有Beta版能实现)已经能够生成一些不比依靠Tasker App Factory程序本身而运行的独立应用。从App Factory的教学文档来看,创建应用只需要几秒钟、也就意味着用户要掌握这款应用最强悍的功能只需要在相对简单的过程。对于新用户而言,App Factory还有一个“猜猜如何配置生成的应用”这样一个针对初学者的模式。App Factory的描述里面也建议没有程序开发经验(或者无 *** 需求的)的尽量创建一些基于任务的应用程序。
Tasker-2
App Factory之所以潜力巨大是因为:它生成的.apk文件并不是基于Tasker本身的,也就意味着用户们可以出售、重新包装、或者通过任意方式传播自己的“进程”。
想要深入了解Tasker beta和想要了解如何生成更加灵活的独立App的用户值得去下载这款应用。玩家们在下载应用的时候可以顺便关注一下每次新版本Tasker主要的改进都有哪些。
如何利用Angular *** 服务接入外部API
如何利用Angular *** 服务接入外部API
除了对HTML进行扩展的能力之外,Angular *** 还提供一套简便途径、帮助我们与外部API实现交互。利用其服务与GitHub的API相对接,进而创建一套简单的库浏览器。
现在用这套基础HTML模板为起点
一、准备工作
现在将Angular *** 脚本添加到该文档的head当中:
在此之后,可以在将这套CCS样式添加到行内或者独立的文件当中:
其中不存在任何多余的内容、只保留最基础的布局方案——将搜索栏置于右侧、库信息位于中央、用户库同样置于右侧。还需要将对应代码行打包至pre标签当中,此后还要利用它显示README文件内容——因为这些内容通常来自GitHub Flavored Markdown、而且其中一部分代码行与用户库列表存在重叠。
可以向其中添加更多样式以提升成果的视觉效果——但以上截图都采取最基本的外观设计。
在未来需要编写的JavaScript代码置于本文档的head当中或者为其建立独立文件,但独立文件仍然需要处于Angular *** 脚本之下
二、模块
现在可以为自己的应用程序创建一个模块:
接下来利用ngApp指令将其添加到body标签当中:
三、控制器
需要为自己的应用程序准备一套控制器。为了简化创建流程,将只为应用准备一套控制器,这样就不必考虑如何在不同控制器之间进行信息传递了
四、基础服务
需要对自己的GitHub服务进行定义:
将使用app.factory() *** ,这样就能保证返回对象附带几个以后将会用到的 *** 。将使用$http服务从GitHub的API中获取数据。
五、搜索库
服务中的之一项 *** 负责利用GitHub API对库进行搜索。使用服务非常简单(这项函数能够进入由制造函数返回的对象):
$http.get() *** 是执行GET请求的一种捷径。之一条参数是希望访问的URL。第二条参数则代表一个具备选项的对象。这里只需要params对象——它是一个查询参数散列,将被添加到该请求当中(其中q参数属于搜索字符串)。
$http.get()会返回一项承诺。可以将监听器附加在success()与error()上,并且据此调用回调函数。
六、搜索栏
为了使用之前几步中定义完成的函数,需要在自己的HTML当中添加搜索栏。相关代码非常简单,如下所示:
使用ngModel指令将该输入栏中的值指向至Scope query变量,并在用户按下回车键后利用ngKeyup调用executeSearch()函数(这样$event.keyCode == 13就会进行比较)。无法在Angular *** 表达式中使用条件语句,但一条简单的逻辑运算符(AND)足以很好地完成这项任务。
在输入域下面,使用ngRepeat来显示搜索结果。将显示该库的完整名称与描述(如果需要显示其它不同内容,可以点击此处查看GitHub API说明文档中的可用域)。
还使用ngClick通过该库的完整名称来调用openRepo()函数,这样就能显示与之相关的信息,稍后再对该函数进行定义。
七、使用搜索功能
现在可以使用自己创建完成的服务了。首先,将GitHub参数添加至控制器函数(这样该服务就能被注入到Angular *** 当中):
现在定义executeSearch()函数:
利用来自$scope.query的搜索字符串从当中调用GitHub.searchRepos(),而后在回调中将搜索结果(来自data.items)加入$scope.repos变量。
只要执行以上步骤,就能顺利显示出搜索结果。在浏览器中打开HTML文件并尝试进行搜索:
八、获取库中的数据
被传递至此函数的名称必须为完整名称(结构为:作者名称、斜杠、库名称——例如angular/angular.js),这是因为需要将其传递至GitHub API。
九、获取库中的README文件
README文件中的内容并未被包含在我利用以上函数获取到的数据当中。相反,需要利用另一个API进行调用及获取,因此需要创建以下函数:
这条函数与之前我们创建完毕的两条基本相同,只不过对URL进行了变更。还要利用atob()函数解码README文件的内容,因为它采用base64编码机制。可以点击此处查看GitHub API说明文档中与获取README文件内容相关的信息。
之所以没有将这两条请求塞进同一个函数当中,是因为某些库根本不具备 README文件。如果将二者强行结合,应用程序可能因此发生故障。
十、显示库信息
将在另一个元素div当中显示库的完整名称、查看过该库的人数以及README文件:
将把该信息保存在控制器Scope内的activeRepo变量当中。只要存在可以显示的数据,ngShow就会将该元素显示出来(如果不存在可以显示的数据,将只能看到‘Watched by people’文本,而且没有任何库被选中)。
十一、更新控制器
还需要对控制器进行更新,从而保证其切实获取到库数据并将其纳入Scope当中。下面创建之前附加至ngClick指令的openRepo()函数:
在这里,首先使用GitHub.getRepo() *** 、检查错误而后将该数据引入activeRepo变量。接下来,获取README文件——如果该文件不存在,需要向用户提示该情况。
现在可以再次运行自己的应用程序并查看其实际效果:
十二、获取用户的库
为了将更多功能引入到应用程序当中,将为屏幕右方已被选定库的持有者显示其所有可用库。这要求向服务中引入另一个 *** :
十三、显示用户的库
这基本上相当于重现HTML中的搜索栏机制,不过实际需要显示的是用户名称与user对象中的库,而非输入域或者Scope本身:
到了这一步,应该已经拥有了一套能够切实运作的Angular *** 应用程序——它可以根据搜索字符串获取GitHub库。
Service和Factory等的区别
区别:
1、Service
是一个可注入的构造器,在Angular *** 中它是单例的,用它在Controller中通信或者共享数据都很合适。在service里面可以不用返回东西,因为Angular *** 会调用new关键字来创建对象。
var app = angular.module('app' ,[]);
app.config(function ($provide) {
$provide.service('movie', function () {
this.title = 'The Matrix';
});
});
app.controller('ctrl', function (movie) {
expect(movie.title).toEqual('The Matrix');
});
语法糖:
app.service('movie', function () {
this.title = 'The Matrix';
});
2、Factory
是一个可注入的function,factory可以返回任何东西,它实际上是一个只有$get *** 的provider。
它和service的区别就是:factory是普通function,而service是一个构造器(constructor),这样Angular在调用service时会用new关键字,而调用factory时只是调用普通的function,所以factory可以返回任何东西,而service可以不返回(可查阅new关键字的作用)
var app = angular.module('app', []);
app.config(function ($provide) {
$provide.factory('movie', function () {
return {
title: 'The Matrix';
}
});
});
app.controller('ctrl', function (movie) {
expect(movie.title).toEqual('The Matrix');
});
语法糖:
app.factory('movie', function () {
return {
title: 'The Matrix';
}
});
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。