reponの勉強メモ

主に勉強したことのメモです。

Sinatra+AngularJS+Jsonpで疎結合のwebアプリを作る

ハマったのはjsonpjsonとしていたこと。
localhostで動かしていても、passengerサーバを通していたので、別ドメインだった。


扱い方は、サーバの側は

require 'sinatra'
require 'sinatra/jsonp'

get '/getjson' do
 @data=[{:name=>"tanaka",:score=>30},{:name=>"nakata",:score=>50}]
 if params[:callback]
  :jsonp @data, "#{params[:callback]}"
 else
  "cross domain"
 end
end

とかして、クライアント側は

!!!5
%html
  %head
    %script{:type=>"text/javascript",:scr=>"http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"}
    %script{:type=>"text/javascript",:src=>"https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"}
  %body
    %div{"ng-app"=>""}
      %div{"ng-controller"=>"appCntr"}
        %ul{"ng-repeat"=>"user in users"}
          %li {{user.name}}
          %li {{user.score}}
    :javascript
      $(function(){
        function appCntr($scope,$http){
          $http.jsonp(url+"?callback=JSON_CALLBACK).success(function(data){
          $scope.users=data;
          });
        }
      });

とかする。