javascript - Angular HTTP 请求渲染不同的 HTML

标签 javascript angularjs django-rest-framework angularjs-digest angularjs-ng-include

所以我在 URL /check 处有一个休息端点它返回序列化的用户数据,如下所示:

{
    'username' : 'malikb',
    'email': 'test@gmail.com',
    'first_name': 'Malik',
    'usertype': 'C'
}

我设计的端点为未登录的用户返回 401 状态代码,为已登录的用户返回 200 状态代码,效果很好。但是,我正在尝试使用 Angular 的 $http推断状态代码和 usertype 的服务 key (如果有)。

本质上,我正在尝试使用<ng-include>为登录的匿名用户呈现不同的导航栏,并根据用户类型为登录的用户呈现不同的导航栏。然而,我遇到的问题是请求是异步的。此外,ng-ifsrc我包含的 HTML 的属性似乎不断评估,从而发送数千个 HTTP 请求。有什么办法可以实现这样的功能吗?

最佳答案

避免在 HTML 模板中使用异步函数,因为它们会评估每个摘要周期。避免tangling concerns模型和 View 。 View 应该只渲染模型。 Controller 使用来自 View 的用户事件和来自其他地方的事件来修改模型。

MVC

app.controller('ctrl', function($http) {
    var vm = this;
    this.$onInit = function() {
        vm.userData = { username: 'anonymous' };
        $http.get("/check").then(function(response) {
            vm.userData = response.data;
        });
    };
});
<user-navbar ng-hide="vm.userData.username == 'anonymous'></user-navbar>
<anon-navbar ng-show="vm.userData.username == 'anonymous'></anon-navbar>

关于javascript - Angular HTTP 请求渲染不同的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45315391/

相关文章:

javascript - 用于查找旅行/旅程的起始位置的函数

javascript - 为什么 Angular 在正确更新模型时不通过向 ng-options 中的 <option> 标记添加 'selected' 属性来更新 DOM?

javascript - 如何动态地将动态指令添加到我的 Angular 应用程序中?

python - POST 请求使用 csv 文件中的批量数据创建资源

html - Django REST 可浏览 API 模板更改

javascript - 光标图像在 IE 中不起作用

javascript - v8 中的属性访问

javascript - 使用 CSS3 结束关键帧动画

AngularJS - 表单验证的指令范围问题

django - DRF SessionAuthentication 登录页面不安全?