FB LIKE JACKER

《Enyo框架之旅》第三部分:程序服务端(Service)

2011 年Mar月 31 日由 发布 | 类别: Enyo开发, 实用webOS开发教程, 开发者社区 | Tags: , , ,

需要从远端RSS服务提供端获取数据,根据这样的需求构建本程序的服务端。

在WebOS系统中,服务端(Service)是作为对本地数据、设备和远程web端数据的访问接口。

在我们示例程序使用的是WebService,WebService是直接派生于enyo.Service的。

我们首先在FeedReader.js中声明服务。插入如下代码:


components: [
	    {name: "getFeed", kind: "WebService",
	    onSuccess: "gotFeed",
	    onFailure: "gotFeedFailure"},
	    {kind: "PageHeader", content: "Enyo FeedReader"},
	    {kind: "RowGroup", caption: "Feed URL", components: [
	    	   {kind: "FancyInput",
					components: [
							{kind: "Button", caption: "Get Feed", onclick: "btnClick"}
						    ],
							value: "http://feed.phonekr.com “
		   }
	     ]}
],

 


以上代码声明了getFeed服务,它的类型是WebService。

成功时返回gotFeed,失败时返回gotFeedFailure。

如果我们想点击Get Feed按钮获取对应的feed的话,就要在btnClick事件添加如下代码:


btnClick: function() {
	  var url = "http://query.yahooapis.com/v1/public/yql?q=select"
	      	    + "%20title%2C%20description%20from%20rss%20where%20url%3D%22"
	      	    + this.$.fancyInput.getValue() + "%22&format=json&callback=";
	  this.$.getFeed.setUrl(url);
	  this.$.getFeed.call();
},

 


getFeed WebService需要通过输入的url通过调用getFeed.call来调用。

酱紫啊,实际的url地址是调用雅虎的rss查询服务的API接口。

调用返回包括标题和描述的JSON格式的数据。

$为什么不是¥?它的作用是指代自己。this.$.什么的就是调用自己的部件。

在上述代码中”this.$.fancyInput”对象调用文本框中的RSS地址,”fancyInput”是enyo自动创建的。

它是FancyInput的实例化fancyInput是系统命名规则。

以上相当于一种隐式调用的方式,而this.$.getFeed的调用是一种显式的调用。

 

到现在为止,我们添加了足够多的代码,剩下的就是等待返回的数据,并将它显示出来。

但是,在这之前,我们要判断获取RSS是否成功。于是我们修改代码:

value: "http://feed.phonekr.com“

 

这个地址将添加并浏览锋客网的最新新闻。

 

我们可以通过预先定义的gotFeed和gotFeedFailure两个参数来判断,代码如下:


gotFeed: function(inSender, inResponse) {
	 this.$.button.setContent("Success");
},
gotFeedFailure: function(inSender, inResponse) {
		this.$.button.setContent("Failure");
}

当后台服务端程序完成这个之后,按钮就会更新到显示Success或者Failure。

一般情况下你会看到你的浏览器完成请求。

到这里为止,我们的程序不返回任何的信息,但,这正是下一步我们要做的。

 

声明:此教程有翻译不得当的地方欢迎指出!不吝赐教!

开发环境的构架请参照:搭建Enyo开发环境的教程感谢@911boyV

前几节可以到:enyo开发栏目去查看

锋客网phonekr出品

锋客网开发小组组员redshiftkeying

« 从webOS SDK 3.0预览版体验TouchPad(多图)
[Hero] 简述CyanogenMod, Cronos, Elelinux, gapps等 »

About webOS新闻组

锋客网创始人,90后一名.接触webOS的时间很短,但是喜欢的也特别深,现用机型Pixi+.就一句了?翻滚吧!webOS!

» has written 102 posts

  • lei

    翻译下api文档怎么样

锋客的朋友们

  • 少数派
  • 煮机网

签订契约成为机油吧!

Buy me a coffee~ ;-)

Buy me a coffee~ ;-)
閃開│讓專業的來 沒辦法│我這個人就是太正直了