diff --git a/t/Gruntfile.js b/t/Gruntfile.js
new file mode 100644
index 0000000..bb25666
--- /dev/null
+++ b/t/Gruntfile.js
@@ -0,0 +1,35 @@
+module.exports = function(grunt){
+
+ grunt.initConfig({
+ pkg: grunt.file.readJSON('package.json'),
+ concat:{
+ options:{
+ separator: ';'
+ },
+ dist:{
+ src:[
+ './lib/main.js',
+ './lib/directive/**/*.js',
+ './lib/service/**/*.js',
+ './lib/list/**/*.js'
+ ],
+ dest:'./build/main.js'
+ }
+ },
+ uglify: {
+ options: {
+ //头部
+ banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
+ },
+ dist: {
+ src: './build/main.js',
+ dest: './build/main.min.js'
+ }
+ }
+ });
+
+ grunt.loadNpmTasks('grunt-contrib-uglify');
+ grunt.loadNpmTasks('grunt-contrib-concat');
+
+ grunt.registerTask('default', ['concat', 'uglify']);
+};
diff --git a/t/README.md b/t/README.md
index 610c045..0d07e3a 100644
--- a/t/README.md
+++ b/t/README.md
@@ -1,5 +1,7 @@
爱搜索 爱生活
======
+网址:[点击](http://vczero.github.io/t/html/index.html#/)
+
+ 图书
+ 音乐
+ 电影
diff --git a/t/build/main.js b/t/build/main.js
new file mode 100644
index 0000000..05fc11e
--- /dev/null
+++ b/t/build/main.js
@@ -0,0 +1,294 @@
+var app = angular.module('app', ['ui.router']);
+
+/*$rootScope的相关配置*/
+app.run(['$rootScope', function($rootScope){
+ $rootScope.version = '0.1';
+ $rootScope.author = 'vczero';
+ $rootScope.author_alias = '鬼谣';
+ $rootScope.isNoLoaded = true;
+ $rootScope.bookList = []; //当然这是个不好的做法,只因为APP太simple
+ $rootScope.musicList = [];
+ $rootScope.movieList = [];
+ $rootScope.keywordsObj = {
+ book: '',
+ music: '',
+ movie: ''
+ };
+}]);
+
+/*服务的URL配置*/
+app.constant('ServiceConfig', {
+ book_search: 'https://api.douban.com/v2/book/search',
+ book_search_id: 'https://api.douban.com/v2/book/',
+
+ music_search: 'https://api.douban.com/v2/music/search',
+ music_search_id: 'https://api.douban.com/v2/music/',
+
+ movie_search: 'https://api.douban.com/v2/movie/search',
+ movie_search_id: 'https://api.douban.com/v2/movie/subject/'
+});
+
+app.config(['$stateProvider', '$urlRouterProvider',function($stateProvider, $urlRouterProvider){
+ /*URL路由*/
+ $urlRouterProvider.otherwise("/");
+
+ /*状态配置*/
+ $stateProvider
+ //首页
+ .state('index',{
+ url: '/',
+ views:{
+ header:{
+ templateUrl: '../html/views/list_header.html',
+ controller: 'SearchController'
+ },
+ container:{
+ templateUrl: '../html/views/list_book.html',
+ controller: 'BookListController'
+ },
+ footer:{
+ templateUrl: '../html/views/list_footer.html',
+ controller: ''
+ }
+ }
+ })
+ //book list
+ .state('book_list',{
+ url: '/book',
+ views:{
+ header:{
+ templateUrl: '../html/views/list_header.html',
+ controller: 'SearchController'
+ },
+ container:{
+ templateUrl: '../html/views/list_book.html',
+ controller: 'BookListController'
+ },
+ footer:{
+ templateUrl: '../html/views/list_footer.html',
+ controller: ''
+ }
+ }
+ })
+ // book detail
+ .state('book_detail',{
+ url: '/book/:id',
+ views:{
+ header:{
+ templateUrl: '../html/views/list_header.html',
+ controller: 'SearchController'
+ },
+ container:{
+ templateUrl: '../html/views/detail_book.html',
+ controller: 'BookDetailController'
+ },
+ footer:{
+ templateUrl: '../html/views/list_footer.html',
+ controller: ''
+ }
+ }
+ })
+
+ // music list
+ .state('music_lsit',{
+ url: '/music',
+ views:{
+ header:{
+ templateUrl: '../html/views/list_header.html',
+ controller: 'SearchController'
+ },
+ container:{
+ templateUrl: '../html/views/list_music.html',
+ controller: 'musicListController'
+ },
+ footer:{
+ templateUrl: '../html/views/list_footer.html',
+ controller: ''
+ }
+ }
+ })
+
+ // movie list
+ .state('movie_lsit',{
+ url: '/movie',
+ views:{
+ header:{
+ templateUrl: '../html/views/list_header.html',
+ controller: 'SearchController'
+ },
+ container:{
+ templateUrl: '../html/views/list_movie.html',
+ controller: 'movieListController'
+ },
+ footer:{
+ templateUrl: '../html/views/list_footer.html',
+ controller: ''
+ }
+ }
+ });
+}]);
+;
+
+app.directive('loading', function(){
+
+ var str = '

';
+ return {
+ restrict: 'AE',
+ template: str,
+ replace: true
+ };
+
+});
+;
+app.directive('tip', function(){
+ var str = '
';
+ return {
+ restrict: 'AE',
+ template: str,
+ replace: true
+ };
+
+});
+;/*构建BookList服务*/
+app.factory('bookList', ['$rootScope', '$http', 'ServiceConfig', function($rootScope, $http, ServiceConfig){
+ $rootScope.isNoLoaded = true;
+ var _BookList = {
+ getData: function(keywords){
+ $rootScope.isNoLoaded = true;
+ $http.jsonp(ServiceConfig.book_search + '?callback=searchBookList&count=10&q=' + keywords);
+ window.searchBookList = function(data){
+ if(data.books.length){
+ $rootScope.isNoLoaded = false;
+ }
+ var list = [];
+ for(var i = 0; i < data.books.length; i++){
+ var book = data.books[i];
+ var item = {
+ id: book.id,
+ image: book.image,
+ origin_title: book.title || '书名未共享',
+ author: book.author[0] || '作者未知',
+ publisher: book.publisher || '出版社未知',
+ price: book.price.split('.')[0] || '未知',
+ pages: book.pages
+ };
+ list.push(item);
+ }
+ $rootScope.bookList = list;
+ };
+ }
+ };
+
+ return _BookList;
+}]);;/*构建movieList服务*/
+app.factory('movieList', ['$rootScope', '$http', 'ServiceConfig', function($rootScope, $http, ServiceConfig){
+ $rootScope.isNoLoaded = true;
+ var _MovieList = {
+ getData: function(keywords){
+ $rootScope.isNoLoaded = true;
+ $http.jsonp(ServiceConfig.movie_search + '?callback=movieSearch&count=5&q=' + keywords);
+
+ window.movieSearch = function(data){
+ $rootScope.isNoLoaded = false;
+ if(data.subjects && data.subjects.length){
+ $rootScope.movieList = data.subjects;
+ }
+ console.log(data.subjects);
+ };
+ }
+ };
+
+ return _MovieList;
+}]);;/*构建musicList服务*/
+app.factory('musicList', ['$rootScope', '$http', 'ServiceConfig', function($rootScope, $http, ServiceConfig){
+ $rootScope.isNoLoaded = true;
+ var _MusicList = {
+ getData: function(keywords){
+ $rootScope.isNoLoaded = true;
+ $http.jsonp(ServiceConfig.music_search + '?callback=musicSearch&count=10&q=' + keywords);
+
+ window.musicSearch = function(data){
+ $rootScope.isNoLoaded = false;
+ if(data.musics && data.musics.length){
+ $rootScope.musicList = data.musics;
+ }
+ };
+ }
+ };
+
+ return _MusicList;
+}]);;/*初始化图书列表页*/
+app.controller('BookListController', ['$rootScope', 'bookList',function($rootScope, bookList){
+ if(!$rootScope.keywordsObj.book){
+ $rootScope.keywordsObj.book = 'C语言';
+ }
+ bookList.getData($rootScope.keywordsObj.book);
+}]);
+
+
+/*图书详情页*/
+app.controller('BookDetailController', ['$rootScope', '$http', '$scope', '$location', 'ServiceConfig',function($rootScope, $http, $scope, $location, ServiceConfig){
+ var bookId = $location.path().split('/book/')[1] || '';
+ $rootScope.isNoLoaded = true;
+ $http.jsonp(ServiceConfig.book_search_id + '' + bookId + '?callback=showBookDeatil');
+ window.showBookDeatil = function(data){
+ $rootScope.isNoLoaded = false;
+ $scope.data = data;
+ };
+}]);;app.controller('MenuController', ['$scope', '$location',function($scope, $location){
+ $scope.bookSearch = function(){
+ $location.path('/book');
+ };
+
+ $scope.musicSearch = function(){
+ $location.path('/music');
+ };
+
+ $scope.movieSearch = function(){
+ $location.path('/movie');
+ };
+
+}]);;/*初始化的结果*/
+app.controller('movieListController', ['$rootScope', 'movieList',function($rootScope, movieList){
+ if(!$rootScope.keywordsObj.movie){
+ $rootScope.keywordsObj.movie = '幸福';
+ }
+ movieList.getData($rootScope.keywordsObj.movie);
+}]);;
+/*初始化的结果*/
+app.controller('musicListController', ['$rootScope', 'musicList',function($rootScope, musicList){
+
+ if(!$rootScope.keywordsObj.music){
+ $rootScope.keywordsObj.music = '刘德华';
+ }
+ musicList.getData($rootScope.keywordsObj.music);
+}]);
+;/*搜索*/
+var SearchController = function($scope, $rootScope, $location, bookList, musicList, movieList){
+ var path = $location.path();
+ $scope.search = function(){
+ var keywords = $scope.keywords;
+ if(path.indexOf('/book') !== -1 || path === '/'){
+ if(keywords){
+ $rootScope.keywordsObj.book = keywords;
+ }
+ bookList.getData($rootScope.keywordsObj.book);
+
+ }else if(path.indexOf('/music') !== -1 || path === '/music'){
+ if(keywords){
+ $rootScope.keywordsObj.music = keywords;
+ }
+ musicList.getData($rootScope.keywordsObj.music);
+
+ }else if(path.indexOf('/movie') !== -1 || path === '/movie'){
+ if(keywords){
+ $rootScope.keywordsObj.movie = keywords;
+ }
+ movieList.getData($rootScope.keywordsObj.movie);
+ }
+ };
+};
+
+SearchController.$inject = ['$scope', '$rootScope', '$location', 'bookList', 'musicList', 'movieList'];
+
+app.controller('SearchController', SearchController);
diff --git a/t/build/main.min.js b/t/build/main.min.js
new file mode 100644
index 0000000..664fc1e
--- /dev/null
+++ b/t/build/main.min.js
@@ -0,0 +1,2 @@
+/*! wlhmyit 2014-12-12 */
+var app=angular.module("app",["ui.router"]);app.run(["$rootScope",function(a){a.version="0.1",a.author="vczero",a.author_alias="鬼谣",a.isNoLoaded=!0,a.bookList=[],a.musicList=[],a.movieList=[],a.keywordsObj={book:"",music:"",movie:""}}]),app.constant("ServiceConfig",{book_search:"https://api.douban.com/v2/book/search",book_search_id:"https://api.douban.com/v2/book/",music_search:"https://api.douban.com/v2/music/search",music_search_id:"https://api.douban.com/v2/music/",movie_search:"https://api.douban.com/v2/movie/search",movie_search_id:"https://api.douban.com/v2/movie/subject/"}),app.config(["$stateProvider","$urlRouterProvider",function(a,b){b.otherwise("/"),a.state("index",{url:"/",views:{header:{templateUrl:"../html/views/list_header.html",controller:"SearchController"},container:{templateUrl:"../html/views/list_book.html",controller:"BookListController"},footer:{templateUrl:"../html/views/list_footer.html",controller:""}}}).state("book_list",{url:"/book",views:{header:{templateUrl:"../html/views/list_header.html",controller:"SearchController"},container:{templateUrl:"../html/views/list_book.html",controller:"BookListController"},footer:{templateUrl:"../html/views/list_footer.html",controller:""}}}).state("book_detail",{url:"/book/:id",views:{header:{templateUrl:"../html/views/list_header.html",controller:"SearchController"},container:{templateUrl:"../html/views/detail_book.html",controller:"BookDetailController"},footer:{templateUrl:"../html/views/list_footer.html",controller:""}}}).state("music_lsit",{url:"/music",views:{header:{templateUrl:"../html/views/list_header.html",controller:"SearchController"},container:{templateUrl:"../html/views/list_music.html",controller:"musicListController"},footer:{templateUrl:"../html/views/list_footer.html",controller:""}}}).state("movie_lsit",{url:"/movie",views:{header:{templateUrl:"../html/views/list_header.html",controller:"SearchController"},container:{templateUrl:"../html/views/list_movie.html",controller:"movieListController"},footer:{templateUrl:"../html/views/list_footer.html",controller:""}}})}]),app.directive("loading",function(){var a='
';return{restrict:"AE",template:a,replace:!0}}),app.directive("tip",function(){var a='
';return{restrict:"AE",template:a,replace:!0}}),app.factory("bookList",["$rootScope","$http","ServiceConfig",function(a,b,c){a.isNoLoaded=!0;var d={getData:function(d){a.isNoLoaded=!0,b.jsonp(c.book_search+"?callback=searchBookList&count=10&q="+d),window.searchBookList=function(b){b.books.length&&(a.isNoLoaded=!1);for(var c=[],d=0;d
- i so
+ i搜索 i生活
@@ -14,19 +14,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+