如何在成功提交表单后重新加载导航栏
How do I reload my navbar upon a successful form submission?
我使用angular.js。我的导航栏有一个控制器,如下所示。
var controllers = angular.module('controllers', []);
controllers.controller('NavbarController', ['$scope', '$http',
function ($scope, $http) {
$http.get('/api/courses')
.success(function(data) {
$scope.courses = data.objects;
});
}
]);
这将给我所有已经创建的课程。我把它放在导航栏上,就像这样:
<ul class="dropdown-menu">
<li ng-repeat="course in courses">
<a href="#/course/course_id/{{ course.id }}">{{ course.name }}</a>
</li>
</ul>
这在我加载页面时有效。然而,我有一个表格来创建一个新的课程,这也是有效的。然而,在成功提交后,导航栏将不会包含该类,直到我完全重新加载页面。这是我的控制器,它创建了一个新的课程。
controllers.controller('CreateCourseController', ['$scope', '$http',
function($scope, $http) {
$scope.form_data = {};
$scope.submitForm = function() {
$http.post('/api/courses', $scope.form_data).
success(function(data) {
// here, I want to add this item into the navbar selection somehow
});
}
}
]);
在angular中,将这个新添加的类干净地添加到导航栏中的最佳方式是什么?
您可以使用$broadcast发送需要更新导航的消息,并使用$on侦听事件。请参阅:https://docs.angularjs.org/api/ng/type/$rootScope.Scope
也许是这样的:
var controllers = angular.module('controllers', []);
controllers.controller('NavbarController', ['$scope', '$http',
function ($scope, $http) {
var updateNav = function() {
$http.get('/api/courses')
.success(function(data) {
$scope.courses = data.objects;
});
};
// Init
updateNav();
// Subscribe
$scope.$on('nav:updated', updateNav() );
}]);
controllers.controller('CreateCourseController', ['$scope', '$http',
function($scope, $http) {
$scope.form_data = {};
$scope.submitForm = function() {
$http.post('/api/courses', $scope.form_data).
success(function(data) {
// here, I want to add this item into the navbar selection somehow
$scope.$broadcast('nav:updated');
});
}
}]);
相关文章:
- 导航栏和AJAX加载
- 直接导航到chrome中的页面时未加载Javascript脚本
- 单击带有相应消息的导航(不重新加载页面)
- Facebook PHP+JavaScript-在页面加载之前导航时出现异常
- 使用jQuery移动ajax导航加载多页模板
- 选择框导航:窗口打开页面加载而不是更改
- 如何仅在窗口宽度从桌面(>1024px)更改为移动(<1025px)导航时重新加载页面
- 导航时加载 GIF 图像
- 更改页面加载离子的导航栏颜色
- 响应式导航在页面加载时打开,然后隐藏.应该在页面加载时隐藏
- 首次加载后从导航中删除类
- 如何在 Office 365 加载项中启用允许从沙盒属性顶部导航
- 在每次加载页面时都不会重新加载导航栏
- 通过 ajax 加载导航后重新初始化引导下拉列表
- 从ajax动态加载导航中移除Attr(href)
- 如何在成功提交表单后重新加载导航栏
- 在没有AJAX的情况下,在悬停时加载导航中的图像
- 如何从外部文件加载导航菜单?(没有Wamp,所有代码必须是'浏览器端')
- 将HTML下载到iOS持久存储并加载/导航到它
- 登录后重新加载导航组件重定向到另一个组件 Angular 2