终于弄懂了传params后台如何收到
This commit is contained in:
parent
f049bb2b39
commit
cd97a74771
|
|
@ -29,7 +29,7 @@
|
||||||
<div class="ui category right search item">
|
<div class="ui category right search item">
|
||||||
<div class="ui transparent icon input">
|
<div class="ui transparent icon input">
|
||||||
<input class="prompt" type="text" placeholder="请输入书签的Url...">
|
<input class="prompt" type="text" placeholder="请输入书签的Url...">
|
||||||
<i class="search link icon"></i>
|
<i class="search link icon" ng-click="searchBookmarks()"></i>
|
||||||
</div>
|
</div>
|
||||||
<div class="results"></div>
|
<div class="results"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -60,8 +60,10 @@
|
||||||
<script src="/scripts/externe/angular.min.js"></script>
|
<script src="/scripts/externe/angular.min.js"></script>
|
||||||
<script src="/scripts/externe/angular-ui-router.min.js"></script>
|
<script src="/scripts/externe/angular-ui-router.min.js"></script>
|
||||||
<script src="/scripts/app-angular.js"></script>
|
<script src="/scripts/app-angular.js"></script>
|
||||||
<script src="/scripts/services/bookmark-services.js"></script>
|
<script src="/scripts/services/bookmark-service.js"></script>
|
||||||
|
<script src="/scripts/services/pub-sub-service.js"></script>
|
||||||
<script src="/scripts/controllers/bookmarks-controller.js"></script>
|
<script src="/scripts/controllers/bookmarks-controller.js"></script>
|
||||||
|
<script src="/scripts/controllers/tags-controller.js"></script>
|
||||||
<script src="/scripts/controllers/menu-controller.js"></script>
|
<script src="/scripts/controllers/menu-controller.js"></script>
|
||||||
<script src="/scripts/externe/semantic.min.js"></script>
|
<script src="/scripts/externe/semantic.min.js"></script>
|
||||||
<script src="/scripts/semantic-init.js"></script>
|
<script src="/scripts/semantic-init.js"></script>
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ app.config(function ($stateProvider, $urlRouterProvider) {
|
||||||
.state('tags', {
|
.state('tags', {
|
||||||
url:'/tags',
|
url:'/tags',
|
||||||
templateUrl: '/views/tags.html',
|
templateUrl: '/views/tags.html',
|
||||||
|
controller: 'tagsCtr'
|
||||||
})
|
})
|
||||||
.state('advice', {
|
.state('advice', {
|
||||||
url:'/advice',
|
url:'/advice',
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,25 @@
|
||||||
app.controller('bookmarksCtr', ['$scope', '$filter', 'bookmarkService', function($scope, $filter, bookmarkService) {
|
app.controller('bookmarksCtr', ['$scope', '$filter', 'bookmarkService', 'pubSubService', function($scope, $filter, bookmarkService, pubSubService) {
|
||||||
$scope.bookmarks = []; // 书签数据
|
console.log("Hello bookmarksCtr...");
|
||||||
|
$scope.bookmarks = []; // 书签数据
|
||||||
|
getBookmarks({s:111, b:222, i:'lcq'});
|
||||||
|
|
||||||
// 获取书签数据
|
pubSubService.subscribe('MenuCtr.bookmarks', $scope, function(event, data) {
|
||||||
var pageId = 1;
|
console.log('subscribe MenuCtr.bookmarks', data);
|
||||||
bookmarkService.getBookmarks(pageId).then(
|
});
|
||||||
function(data) {
|
|
||||||
console.log(data);
|
pubSubService.subscribe('MenuCtr.searchBookmarks', $scope, function(event, data) {
|
||||||
$scope.bookmarks = data;
|
console.log(data);
|
||||||
},
|
});
|
||||||
function(errorMsg) {
|
|
||||||
console.log(errorMsg);
|
function getBookmarks(params){
|
||||||
}
|
bookmarkService.getBookmarks(params).then(
|
||||||
);
|
function(data) {
|
||||||
|
console.log(data);
|
||||||
|
$scope.bookmarks = data;
|
||||||
|
},
|
||||||
|
function(errorMsg) {
|
||||||
|
console.log(errorMsg);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
}]);
|
}]);
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,11 @@
|
||||||
app.controller('menuCtr', ['$scope', '$state', function($scope, $state) {
|
app.controller('menuCtr', ['$scope', '$state', 'pubSubService', function($scope, $state, pubSubService) {
|
||||||
$scope.login = true; /**< 是否登陆 */
|
$scope.login = true; /**< 是否登陆 */
|
||||||
$scope.selectLoginIndex = 0; /**< 默认登陆之后的选择的菜单索引,下表从 0 开始 */
|
$scope.selectLoginIndex = 0; /**< 默认登陆之后的选择的菜单索引,下表从 0 开始 */
|
||||||
$scope.selectNotLoginIndex = 0; /**< 默认未登陆之后的选择的菜单索引,下表从 0 开始 */
|
$scope.selectNotLoginIndex = 0; /**< 默认未登陆之后的选择的菜单索引,下表从 0 开始 */
|
||||||
|
if ($scope.login) {
|
||||||
|
setTimeout(()=>{$state.go('bookmarks')},0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @todo http://stackoverflow.com/questions/31449948/ui-router-state-go-not-working
|
* @todo http://stackoverflow.com/questions/31449948/ui-router-state-go-not-working
|
||||||
|
|
@ -12,7 +16,7 @@ app.controller('menuCtr', ['$scope', '$state', function($scope, $state) {
|
||||||
|
|
||||||
// 登陆之后显示的菜单数据。uiSerf:内部跳转链接。
|
// 登陆之后显示的菜单数据。uiSerf:内部跳转链接。
|
||||||
$scope.loginMenus = [
|
$scope.loginMenus = [
|
||||||
{uiSref:'bookmarks', title:'我的书签'},
|
{uiSref:'bookmarks', title:'书签'},
|
||||||
{uiSref:'tags', title:'书签分类'},
|
{uiSref:'tags', title:'书签分类'},
|
||||||
{uiSref:'advice', title:'建议'},
|
{uiSref:'advice', title:'建议'},
|
||||||
{uiSref:'settings', title:'设置'},
|
{uiSref:'settings', title:'设置'},
|
||||||
|
|
@ -32,10 +36,23 @@ app.controller('menuCtr', ['$scope', '$state', function($scope, $state) {
|
||||||
* @param {bool} login - 登陆标志
|
* @param {bool} login - 登陆标志
|
||||||
*/
|
*/
|
||||||
$scope.selectMenu = function(index, login){
|
$scope.selectMenu = function(index, login){
|
||||||
|
var msg = 'MenuCtr.';
|
||||||
if (login) {
|
if (login) {
|
||||||
$scope.selectLoginIndex = index;
|
$scope.selectLoginIndex = index;
|
||||||
|
msg += $scope.loginMenus[index].uiSref;
|
||||||
} else {
|
} else {
|
||||||
$scope.selectNotLoginIndex = index;
|
$scope.selectNotLoginIndex = index;
|
||||||
|
msg += $scope.notLoginMenus[index].uiSref;
|
||||||
}
|
}
|
||||||
|
console.log(msg);
|
||||||
|
pubSubService.publish(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @func
|
||||||
|
* @desc 点击搜索按钮搜索书签
|
||||||
|
*/
|
||||||
|
$scope.searchBookmarks = function(){
|
||||||
|
pubSubService.publish('MenuCtr.searchBookmarks', {'key': 'JavaScript'});
|
||||||
}
|
}
|
||||||
}]);
|
}]);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
app.controller('tagsCtr', ['$scope', '$filter', 'bookmarkService', 'pubSubService', function($scope, $filter, bookmarkService, pubSubService) {
|
||||||
|
console.log("Hello tagsCtr...");
|
||||||
|
getTags({a:1, b:2, c:3});
|
||||||
|
|
||||||
|
$scope.tags = []; // 书签数据
|
||||||
|
pubSubService.subscribe('MenuCtr.tags', $scope, function(event, data) {
|
||||||
|
console.log('subscribe MenuCtr.tags', data);
|
||||||
|
var params = {a:1, b:2, c:3};
|
||||||
|
getTags(params);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
function getTags(params){
|
||||||
|
bookmarkService.getTags(params).then(
|
||||||
|
function(data) {
|
||||||
|
console.log(data);
|
||||||
|
$scope.tags = data;
|
||||||
|
},
|
||||||
|
function(errorMsg) {
|
||||||
|
console.log(errorMsg);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}]);
|
||||||
|
|
@ -7,14 +7,15 @@ app.factory('bookmarkService', ['$http', '$q', function($http, $q) {
|
||||||
// addBookmark: addBookmark,
|
// addBookmark: addBookmark,
|
||||||
// delBookmark: delBookmark,
|
// delBookmark: delBookmark,
|
||||||
// editBookmark: editBookmark,
|
// editBookmark: editBookmark,
|
||||||
|
getTags:getTags,
|
||||||
// register: register
|
// register: register
|
||||||
};
|
};
|
||||||
|
|
||||||
// Return a promise object.
|
// Return a promise object.
|
||||||
function getBookmarks(pageId) {
|
function getBookmarks(params) {
|
||||||
var def = $q.defer();
|
var def = $q.defer();
|
||||||
|
|
||||||
$http.get('/api/bookmarks/'+pageId)
|
$http.get('/api/bookmarks/', {params:params})
|
||||||
.success(function(data) {
|
.success(function(data) {
|
||||||
def.resolve(data);
|
def.resolve(data);
|
||||||
})
|
})
|
||||||
|
|
@ -26,6 +27,19 @@ app.factory('bookmarkService', ['$http', '$q', function($http, $q) {
|
||||||
return def.promise;
|
return def.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Return a promise object.
|
||||||
|
function getTags(params) {
|
||||||
|
var def = $q.defer();
|
||||||
|
$http.get('/api/tags/', {params:params})
|
||||||
|
.success(function(data) {
|
||||||
|
def.resolve(data);
|
||||||
|
})
|
||||||
|
.error(function(data) {
|
||||||
|
console.log('Error: ' + data);
|
||||||
|
def.reject('Failed to get todos');
|
||||||
|
});
|
||||||
|
return def.promise;
|
||||||
|
}
|
||||||
|
|
||||||
return service;
|
return service;
|
||||||
}]);
|
}]);
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
// 这是一个通用的 发布订阅模块
|
||||||
|
//参考:https://gist.github.com/turtlemonvh/10686980/038e8b023f32b98325363513bf2a7245470eaf80
|
||||||
|
app.factory('pubSubService', ['$rootScope', function ($rootScope) {
|
||||||
|
// private notification messages
|
||||||
|
var _DATA_UPDATED_ = '_DATA_UPDATED_';
|
||||||
|
/*
|
||||||
|
* @name: publish
|
||||||
|
* @description: 消息发布者,只用$emit冒泡进行消息发布的低能耗无污染方法
|
||||||
|
* @param: {string=}: msg, 要发布的消息关键字,默认为'_DATA_UPDATED_'指数据更新
|
||||||
|
* @param: {object=}: data,随消息一起传送的数据,默认为空
|
||||||
|
* @example:
|
||||||
|
* pubSubService.publish('config.itemAdded', {'id': getID()});
|
||||||
|
* 更一般的形式是:
|
||||||
|
* pubSubService.publish();
|
||||||
|
*/
|
||||||
|
var publish = function (msg, data) {
|
||||||
|
msg = msg || _DATA_UPDATED_;
|
||||||
|
data = data || {};
|
||||||
|
$rootScope.$emit(msg, data);
|
||||||
|
};
|
||||||
|
/*
|
||||||
|
* @name: subscribe
|
||||||
|
* @description: 消息订阅者
|
||||||
|
* @param: {string=}: 消息关键字,默认为'_DATA_UPDATED_'指数据更新
|
||||||
|
* @param: {object=}: 控制器作用域,用以解绑定,默认为空
|
||||||
|
* @param: {function}: 回调函数,在订阅消息到来时执行
|
||||||
|
* @example:
|
||||||
|
* pubSubService.subscribe('data_change', $scope, function(event, data) {
|
||||||
|
* $scope.power = data.power;
|
||||||
|
* $scope.mass = data.mass;
|
||||||
|
* });
|
||||||
|
* 更一般的形式是:
|
||||||
|
* pubSubService.subscribe(function(){});
|
||||||
|
*/
|
||||||
|
var subscribe = function (msg, scope, func) {
|
||||||
|
if (!angular.isFunction(func)) {
|
||||||
|
console.log("pubSubService.subscribe need a callback function");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
msg = msg || _DATA_UPDATED_;
|
||||||
|
var unbind = $rootScope.$on(msg, func);
|
||||||
|
//可控的事件反绑定机制
|
||||||
|
if (scope) {
|
||||||
|
scope.$on('$destroy', unbind);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// return the publicly accessible methods
|
||||||
|
return {
|
||||||
|
publish: publish,
|
||||||
|
subscribe: subscribe
|
||||||
|
};
|
||||||
|
}])
|
||||||
|
|
@ -1 +1 @@
|
||||||
<p> 书签分类页面 </p>
|
<p ng-repeat="tag in tags"> {{ tag }} </p>
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
|
|
||||||
var api = require('express').Router();
|
var api = require('express').Router();
|
||||||
|
|
||||||
api.get('/bookmarks/:pageId', function (req, res) {
|
api.get('/bookmarks', function (req, res) {
|
||||||
console.log('hello query', JSON.stringify(req.params.pageId));
|
console.log('hello bookmarks', JSON.stringify(req.query));
|
||||||
|
|
||||||
var data = [
|
var data = [
|
||||||
{title:'谷歌', description:'一个网站', url:'https://www.google.com.hk/', tags:['搜索','常用']},
|
{title:'谷歌', description:'一个网站', url:'https://www.google.com.hk/', tags:['搜索','常用']},
|
||||||
|
|
@ -14,4 +14,10 @@ api.get('/bookmarks/:pageId', function (req, res) {
|
||||||
res.json(data);
|
res.json(data);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
api.get('/tags', function (req, res) {
|
||||||
|
console.log('hello tags', JSON.stringify(req.query));
|
||||||
|
var data = ['搜索', '常用', '新闻', '博文', 'JavaScript']
|
||||||
|
res.json(data);
|
||||||
|
});
|
||||||
|
|
||||||
module.exports = api;
|
module.exports = api;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue