Page 162 - AngularJS权威教程
P. 162

142  第 15 章  同外界通信:XHR 和服务器通信




                         如果我们使用的服务器要求在URL中输入端口号,例如http://localhost:3000,
                        我们必须对 URL 进行转义。这种情 况下 URL 规则看起来是 这样的 :
                        $resource('http://localhost\\:3000/api/users/:id.json')。

                  paramDefaults(可选,对象)

                 第二个参数中包含了发送请求时URL中参数的默认值。对象中的键会与参数名进行匹配。如
             果我们传入了一个没有在URL中设置过的参数,那它会以普通的查询字符串的形式被发送。

                 例如,如果URL字符串具有/api/users/:id这样的签名,并且我们将默认值设置为{id:
             '123', name: 'Ari' },那么URL最终会被转换成/api/users/123?name=Ari。
                 这里可以像上面一样硬编码一个默认值来传入一个静态值,也可以设置它从一个数据对象中
             读取动态值。

                 如果要设置动态值,需要在值之前加上@字符作为前缀。
                  actions(可选,对象)

                 动作对象是具有自定义动作,并且可以对默认的资源动作进行扩展的hash对象。
                 在这个对象中,对象的键就是自定义动作的名字,而$http设置对象的值会对URL中相应的
             参数进行替换。

                 例如,我们可以用如下形式在资源上定义一个新的update动作:

                 $resource('/api/users/:id.:format', {
                     format: 'json',
                     id: '123'
                 }, {
                     update: {
                         method: 'PUT'
                     }
                 });


             15.13 使用 Restangular


                 尽管AngularJS本身非常强大,可通过将所有的重要数据打包在应用内部而形成一个独立的
             应用,但这样就会错过这个框架最优秀的功能之一:和外部世界通信的能力。

                 本节会深入讨论一个非常不可思议的、设计良好的库:Restangular。


             15.14  Restangular 简介

                 Restangular是一个专门用来从外部读取数据的AngularJS服务。

                 为什么不用$http或$resource?尽管$http和$resource是AngularJS的内置服务,但这两个
             服务在某些方面的功能是有限的。Restangular通过完全不同的途径实现了XHR通信,并提供了良
             好的使用体验。
   157   158   159   160   161   162   163   164   165   166   167