134 lines
4.6 KiB
JavaScript
134 lines
4.6 KiB
JavaScript
app.controller('menuCtr', ['$scope', '$stateParams', '$state', 'pubSubService', 'bookmarkService', function($scope, $stateParams, $state, pubSubService, bookmarkService) {
|
||
console.log("Hello menuCtr")
|
||
$scope.login = false; /**< 是否登陆 */
|
||
$scope.selectLoginIndex = 0; /**< 默认登陆之后的选择的菜单索引,下表从 0 开始 */
|
||
$scope.selectNotLoginIndex = 0; /**< 默认未登陆之后的选择的菜单索引,下表从 0 开始 */
|
||
$scope.keyword = ''; /**< 搜索关键字 */
|
||
$scope.showSearch = false;
|
||
// 防止在登陆的情况下,在浏览器里面直接输入url,这时候要更新菜单选项
|
||
pubSubService.subscribe('Common.menuActive', $scope, function(event, params) {
|
||
console.log("subscribe Common.menuActive", params)
|
||
$scope.login = (params && params.login) || false;
|
||
var index = $scope.login ? ($scope.selectLoginIndex = (params && params.index) || 0) : ($scope.selectNotLoginIndex = (params && params.index) || 0);
|
||
updateMenuActive(index);
|
||
});
|
||
|
||
// 登陆之后显示的菜单数据。uiSerf:内部跳转链接。
|
||
$scope.loginMenus = [{
|
||
uiSref: 'bookmarks',
|
||
title: '书签'
|
||
}, {
|
||
uiSref: 'tags',
|
||
title: '书签分类'
|
||
}, {
|
||
uiSref: 'advice',
|
||
title: '建议'
|
||
}, {
|
||
uiSref: 'settings',
|
||
title: '设置'
|
||
}];
|
||
|
||
// 未登陆显示的菜单数据
|
||
$scope.notLoginMenus = [{
|
||
uiSref: '/',
|
||
title: '首页'
|
||
}, {
|
||
uiSref: 'login',
|
||
title: '登陆'
|
||
}];
|
||
|
||
/**
|
||
* @func
|
||
* @desc 点击搜索按钮搜索书签
|
||
*/
|
||
$scope.searchBookmarks = function() {
|
||
console.log('searchBookmarks clicked...');
|
||
pubSubService.publish('MenuCtr.searchBookmarks', {
|
||
'keyword': $scope.keyword
|
||
});
|
||
$scope.selectLoginIndex = 0;
|
||
}
|
||
|
||
/**
|
||
* @func
|
||
* @desc 点击下拉列表详情搜索
|
||
* @warn 不要使用$('js-checkbox-search').checkbox('is checked')去取,因为dom元素还没更新的。。。
|
||
*/
|
||
$scope.searchDetail = function() {
|
||
$scope.showSearch = !$scope.showSearch;
|
||
console.log('searchDetail ', $scope.showSearch)
|
||
pubSubService.publish('MenuCtr.searchDetail', {
|
||
'showSearch': $scope.showSearch,
|
||
});
|
||
}
|
||
|
||
$scope.updateShowStyle = function(showStyle) {
|
||
console.log('updateShowStyle', showStyle)
|
||
$('.js-radio-' + showStyle).checkbox('set checked');
|
||
pubSubService.publish('MenuCtr.updateShowStyle', {
|
||
'showStyle': showStyle,
|
||
});
|
||
}
|
||
|
||
$scope.showAddBookmarkMoadl = function() {
|
||
pubSubService.publish('MenuCtr.showAddBookmarkMoadl', {
|
||
'action': 'add'
|
||
});
|
||
}
|
||
$scope.logout = function() {
|
||
var params = {
|
||
userName: 'luchenqun'
|
||
};
|
||
bookmarkService.logout(params)
|
||
.then((data) => {
|
||
console.log('logout..........', data)
|
||
$scope.login = false;
|
||
$state.go('login', {
|
||
foo: 'i love you',
|
||
bar: 'hello world'
|
||
})
|
||
})
|
||
.catch((err) => console.log('logout err', err));
|
||
}
|
||
|
||
// 元素构造完成之后,开始使用jquery初始化
|
||
$scope.$on('elementRenderFinished', function(elementRenderFinishedEvent) {
|
||
console.log('menus elementRenderFinished')
|
||
$scope.showSearch = $('.js-checkbox-search').checkbox('is checked');
|
||
$('.js-bookmark-dropdown').dropdown({
|
||
action: 'hide',
|
||
});
|
||
$('.ui.dropdown').dropdown({
|
||
on: 'hover',
|
||
});
|
||
|
||
$('.ui.checkbox').checkbox();
|
||
$('.ui.checkbox.js-radio-navigate').checkbox('check');
|
||
$('.ui.menu a.item').on('click', function() {
|
||
$(this).addClass('selected').siblings().removeClass('selected');
|
||
});
|
||
|
||
$(".ui.menu a.item:first").hover(
|
||
function() {
|
||
$('.js-bookmark-dropdown').dropdown('show');
|
||
},
|
||
function() {
|
||
setTimeout(() => {
|
||
if ($('.js-menu-option:hover').length === 0) {
|
||
$('.js-bookmark-dropdown').dropdown('hide');
|
||
}
|
||
}, 100)
|
||
}
|
||
);
|
||
|
||
$('.ui.menu a.item').on('click', function() {
|
||
$(this).addClass('selected').siblings().removeClass('selected');
|
||
});
|
||
});
|
||
|
||
function updateMenuActive(index) {
|
||
$('.ui.menu a.item').removeClass('selected');
|
||
$('.ui.menu a.item:eq(' + index + ')').addClass('selected');
|
||
}
|
||
}]);
|