diff options
| -rw-r--r-- | .idea/.gitignore | 1 | ||||
| -rw-r--r-- | Rakefile | 1 | ||||
| -rw-r--r-- | example/tweeter/tweeter_addressbook.html | 2 | ||||
| -rw-r--r-- | example/tweeter/tweeterclient.js | 34 | ||||
| -rw-r--r-- | src/Resource.js | 2 | ||||
| -rw-r--r-- | src/angular-bootstrap.js | 1 |
6 files changed, 21 insertions, 20 deletions
diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 00000000..a7c382ed --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1 @@ +workspace.xml @@ -46,6 +46,7 @@ task :compile do src/JSON.js \ src/Model.js \ src/Parser.js \ + src/Resource.js \ src/Scope.js \ src/Server.js \ src/Users.js \ diff --git a/example/tweeter/tweeter_addressbook.html b/example/tweeter/tweeter_addressbook.html index 64a3f95e..92121d5f 100644 --- a/example/tweeter/tweeter_addressbook.html +++ b/example/tweeter/tweeter_addressbook.html @@ -5,7 +5,7 @@ <link rel="stylesheet" type="text/css" href="../../css/angular.css"> <script type="text/javascript" src="../../lib/underscore/underscore.js"></script> <script type="text/javascript" src="../../lib/jquery/jquery-1.4.js"></script> - <script type="text/javascript" src="../../angular.js"></script> + <script type="text/javascript" src="../../src/angular-bootstrap.js"></script> <script type="text/javascript" src="tweeterclient.js"></script> </head> <body ng-class="status" ng-init="mute={}" ng-watch="$anchor.user: tweets = fetchTweets($anchor.user)"> diff --git a/example/tweeter/tweeterclient.js b/example/tweeter/tweeterclient.js index 8c68fac0..612f9dee 100644 --- a/example/tweeter/tweeterclient.js +++ b/example/tweeter/tweeterclient.js @@ -1,28 +1,26 @@ function noop(){} $(document).ready(function(){ + function xhr(method, url, data, callback){ + jQuery.getJSON(url, function(){ + callback.apply(this, arguments); + scope.updateView(); + }) + } + + var resourceFactory = new ResourceFactory({method: xhr}); + + var Tweeter = resourceFactory.route("http://twitter.com/statuses/:service:username.json", {}, { + home: {method:'GET', params: {service:'home_timeline'}, isArray:true }, + user: {method:'GET', params: {service:'user_timeline/'}, isArray:true } + }); + + var scope = window.scope = angular.compile(document, { location:angular.startUrlWatcher() }); - scope.getJSON = function(url, callback) { - var list = []; - var self = this; - self.set('status', 'fetching'); - $.getJSON(url, function(response, code){ - _(response).forEach(function(v,k){ - list[k] = v; - }); - (callback||noop)(response); - self.set('status', ''); - self.updateView(); - }); - return list; - }; function fetchTweets(username){ - return scope.getJSON( - username ? - "http://twitter.com/statuses/user_timeline/"+username+".json" : - "http://twitter.com/statuses/home_timeline.json"); + return username ? Tweeter.user({username: username}) : Tweeter.home(); } scope.set('fetchTweets', fetchTweets); diff --git a/src/Resource.js b/src/Resource.js index c0c7934c..0ff46726 100644 --- a/src/Resource.js +++ b/src/Resource.js @@ -49,7 +49,7 @@ ResourceFactory.prototype = { actions = $.extend({}, ResourceFactory.DEFAULT_ACTIONS, actions); function extractParams(data){ var ids = {}; - foreach(paramDefaults, function(value, key){ + foreach(paramDefaults || {}, function(value, key){ ids[key] = value.charAt && value.charAt(0) == '@' ? Scope.getter(data, value.substr(1)) : value; }); return ids; diff --git a/src/angular-bootstrap.js b/src/angular-bootstrap.js index 0f7cd2ea..d2b2ff9c 100644 --- a/src/angular-bootstrap.js +++ b/src/angular-bootstrap.js @@ -46,6 +46,7 @@ addScript("/JSON.js"); addScript("/Model.js"); addScript("/Parser.js"); + addScript("/Resource.js"); addScript("/Scope.js"); addScript("/Server.js"); addScript("/Users.js"); |
