Javascript 角度v1+;:通过angularjs加载页面中的不同区域
假设当第一次加载网站时,我需要加载左侧和顶部菜单 两个菜单都将独立加载,因此任何人都可以先加载并显示。 所以,请告诉我,如果先加载左上菜单或左上菜单,我需要应用什么技巧来同时显示左上菜单。我需要同时显示两个菜单 请在下面告诉我需要更改哪些代码。下面的代码只是一个示例代码,没有经过测试Javascript 角度v1+;:通过angularjs加载页面中的不同区域,javascript,angularjs,Javascript,Angularjs,假设当第一次加载网站时,我需要加载左侧和顶部菜单 两个菜单都将独立加载,因此任何人都可以先加载并显示。 所以,请告诉我,如果先加载左上菜单或左上菜单,我需要应用什么技巧来同时显示左上菜单。我需要同时显示两个菜单 请在下面告诉我需要更改哪些代码。下面的代码只是一个示例代码,没有经过测试 app.service("TopMenuService", function ($http) { this.getTopMenu = function () { debugger;
app.service("TopMenuService", function ($http) {
this.getTopMenu = function () {
debugger;
return $http.get("/employee/getTopMenu");
};
});
app.service("LeftMenuService", function ($http) {
this.getLeftMenu = function () {
debugger;
return $http.get("/employee/getLeftMenu");
};
});
app.controller("EmpCtrl", function ($scope, TopMenuService,LeftMenuService) {
GetTopMenu();
GetLeftMenu();
function GetTopMenu() {
debugger;
var _getTopMenu = EmployeeService.getTopMenu();
_getTopMenu.then(function (topmenu) {
$scope.topmenu = topmenu.data;
}, function () {
alert('Data not found');
});
}
function GetLeftMenu() {
debugger;
var _getLeftMenu = EmployeeService.getLeftMenu();
_getLeftMenu.then(function (leftmenu) {
$scope.leftmenu = leftmenu.data;
}, function () {
alert('Data not found');
});
}
});
如果要确保只有在两个请求完成后才能继续,请使用$q.all:
app.controller('EmpCtrl', function($scope, TopMenu, LeftMenu, $q) {
$q.all([TopMenu.get(), LeftMenu.get()]).then(function(both) {
var top = both[0];
var left = both[1];
});
});
由承诺控制的加载菜单过程如何 注意
$q.all()
AngularJs中的承诺由。承诺用于同步并发环境中任务的执行,AngularJs的$q.all
接收各种承诺的列表并触发,然后在列表上的所有承诺都得到解决时
回调,在这种情况下,这两个承诺是每个菜单的$http.get()
,这是一个异步承诺案例,因此在发送响应时,它解析承诺并触发然后()
注册回调,最终也将触发$q.all()
只是想知道javascript是通用关键字还是特定角度的?什么是$q?它所做的
返回$q.all([GetTopMenu(),GetLeftMenu()])代码>$q是angular的服务,它是Promise的替代品,现在ES6或babel transpiled通过Promise支持这种开箱即用的服务。allthen关键字特定于$q关键字。我的意思是当我们使用$q关键字时,我们可以使用then函数?在角度上是新的。所以不知道所有。请分享知识。谢谢,我只是想知道javascript是通用关键字还是特定角度的?什么是$q?它所做的返回$q.all([GetTopMenu(),GetLeftMenu()])代码>然后关键字特定于$q关键字。我的意思是当我们使用$q关键字时,我们可以使用then函数?在角度上是新的。所以不知道所有。请分享知识。thanks@Mou通常我们强制使用无缓存
头或向url参数添加时间戳参数:{v:new Date().getTime()}
,但您可以在中找到更详细的错误,因此您可以使用$locationProvider.hmlt5Mode(true)
,如果您的浏览器支持历史API,它将呈现不带
的路由url。免责声明,这个话题现在已经脱离了上下文,我建议你搜索一下,或者打开一个新的问题,这个帖子不属于这个问题,所以不应该在这里讨论。问一个新问题,或者在一个现有的问题中找到答案,这样我会很乐意帮助你。干杯
app.controller("EmpCtrl", function ($scope, $q, TopMenuService, LeftMenuService) {
$scope.shouldDisplayMenus = false;
LoadMenus().then(function () {
$scope.shouldDisplayMenus = true;
});
function LoadMenus() {
return $q.all([
GetTopMenu(),
GetLeftMenu()
]);
}
function GetTopMenu() {
debugger;
var _getTopMenu = EmployeeService.getTopMenu();
_getTopMenu.then(function (topmenu) {
$scope.topmenu = topmenu.data;
}, function () {
alert('Data not found');
});
return _getTopMenu;
}
function GetLeftMenu() {
debugger;
var _getLeftMenu = EmployeeService.getLeftMenu();
_getLeftMenu.then(function (leftmenu) {
$scope.leftmenu = leftmenu.data;
}, function () {
alert('Data not found');
});
return _getLeftMenu;
}
});