等到作用域变量加载完毕后,再在 angular.js 的视图中使用它

2024-03-29

我见过this https://stackoverflow.com/a/11972028/110233 and this https://stackoverflow.com/questions/12265565/angularjs-promise-is-resolved-before-data-is-loaded但似乎可能有一种更简单的方法。

在我看来,我有几个通过权限控制的菜单选项 - 即,并非每个人都可以看到“仪表板”视图。因此,在我看来,在我的菜单选项中,我有如下内容:

<li ng-show="validatePermission('Dashboard')">Dashboard</li>

在我的控制器中,我定义了一个 validatePermission 方法,它正在查看当前用户的权限。例如:

  $scope.validatePermission = function(objectName) {
    if $scope.allPermissions......

另外,在我的控制器中,我通过 $http 调用加载这些权限:

  $http.get('permissions/' + userid + '.json').success(function(data) {  
    $scope.allPermissions = data;....

问题是在视图调用 validatePermission 之前 $scope.allPermissions 不会被加载。如何在视图渲染之前等待 allPermissions 加载?


You ask:

如何在视图渲染之前等待所有权限加载?

为了防止整个视图渲染,必须使用resolve。不过,您不必使用 Promise 库,因为 $http 返回一个 Promise:

var app = angular.module('app');

app.config(function ($routeProvider) { 
  $routeProvider
    .when('/', {
        templateUrl : 'template.html',
        controller : 'MyCtrl',
        resolve : MyCtrl.resolve
  });
});

function MyCtrl ($scope, myHttpResponse) {
   // controller logic
}

MyCtrl.resolve = {
  myHttpResponse : function($http) {
    return $http({
        method: 'GET',
        url: 'http://example.com'
    })
    .success(function(data, status) {
        // Probably no need to do anything here.
    })
    .error(function(data, status){
        // Maybe add an error message to a service here.
        // In this case your $http promise was rejected automatically and the view won't render.
    });
  }
}

但如果您只是想隐藏仪表板

  • ,请按照 Joe Gauterin 的建议进行操作。这是一个非常简单的笨蛋例子 http://plnkr.co/mGX6OcEmy2OOsTl7u19q如果你需要的话。
  • 本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

    等到作用域变量加载完毕后,再在 angular.js 的视图中使用它 的相关文章

    随机推荐

    • 如何动态添加tinymce 4.x到textarea?

      我在初始化后动态地将tinymce添加到textarea时遇到了一个小问题 tinymce init selector textarea theme modern height 100 plugins advlist autolink im
    • SimpleCov 计算用户模型的 0% 覆盖率

      我决定尝试使用简单的科夫 https github com colszowka simplecovgem 我认为这是一个很酷的工具 但我有一个问题 我有一个模型User 我有user spec rb其中包含测试用例 但 simplecov
    • Html.DropDownListFor 设置选定值

      我创建一个 Html DropDownListFor 并从数据库中填充它 如何将选定的值设置为下拉列表 My View Html DropDownListFor m gt m Forms new SelectList Model Forms
    • 相对布局权重

      在布局资源 XML 中 我有 3 个relativelayout 它们位于主relativelayout 内 视图将垂直显示 这3个RelativeLayout 被设置为彼此相邻 我希望它们填充整个屏幕 无论屏幕尺寸是多少 我的布局视图
    • 堆的算法在列表列表中的实现

      我正在使用堆算法创建一个包含所述列表的每个排列的列表列表 每个排列将是其自己的列表 当我在算法中打印它时它可以正常工作 但是当我尝试将它添加到我的列表列表中并且它们都是相同的数组 4 1 2 3 时它不能正常工作 我注释掉了我测试过的打印内
    • 我们如何将上下文转换为片段引用?

      我有一个类 Common 和一个片段 FragmentTest Common java 是一个通用类 它具有其他活动的一些通用函数 这些函数通过每个活动的上下文访问 在这里我传递片段的上下文到该类中的函数 我正在这样做 在片段中 Commo
    • 如何在Python中将一列整数转换为标准小时时间?

      我有一个像这样的数据框 BuyTime ID SellTime 94650 1 94651 94717 1 94817 120458 2 114119 买入时间和卖出时间类型是整数 但我想将它们转换为标准时间日期 我已经用过 quote S
    • Javascript 强制在浏览器中打开链接

      有没有办法从 JavaScript 进行对象检测并强制在特定浏览器中打开链接 For eg 在 IE 中打开 在 Firefox 中打开 不 如果没有一些浏览器插件 绝对不行 如果可能的话 这将是一个巨大的安全风险
    • 数据表 - 按日期范围过滤 - 未返回正确的结果

      我目前正在使用 jQuery 的数据表插件https datatables net https datatables net 使用此处找到的日期范围插件http www daterangepicker com http www datera
    • 删除子循环在完成之前退出

      我有以下代码 它查找文档中类名为 foo 的所有元素 然后将它们全部删除 function doc var items doc getElementsByClassName foo alert items length if items l
    • 获取物理IP地址背后的技巧是什么?

      我怎样才能获得与我访问 时获得的相同的IP地址 http www whatsmyip org http www whatsmyip org 使用C 和winsock库 我知道如何获取 127 0 0 1 和路由器IP 192 168 1 1
    • 哪个文件 gradle.properties 的优先级更高?

      我有本地和全局 gradle properties 需要全局的来配置代理 但它还包含其他参数 想知道如果对于相同的设置指定不同的值会发生什么 哪些文件将优先 或者它们可能是它们是如何合并的 我的全局 gradle properties sy
    • 405 NuGet 推送中不允许使用方法

      当我尝试推送时 我的 NuGet 服务器抛出 405 不允许 至少 NuGet 控制台是这么说的 Failed to process request Method Not Allowed The remote server returned
    • 深度优先图算法的时间复杂度[关闭]

      Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我开始学习时间复杂度 并且我在示例中查找了一些简单排序的时间复杂度 我想知道如何计算图中深度优先搜索的平均时间复杂度 V n and E
    • 如何按降序对 JSON 数组元素进行排序? [复制]

      这个问题在这里已经有答案了 In my 索引 html 我从服务器接收数据 顺序如下 id 1 keyOne valueOne keyTwo valueTwo id 2 keyOne valueOne keyTwo valueTwo id
    • 子类化 static.File

      我是 Twisted 的新手 在对twisted 中的 static File 进行一些必要的子类化时遇到了麻烦 我正在尝试在子类中设置请求标头 class ResponseFile static File def render GET s
    • now-cli 部署不会构建 package.json 依赖项

      我正在尝试通过部署 Sapper 构建的应用程序 now node 该任务基本上是部署具有依赖项的 Polka 服务器并静态地提供静态 和客户端 文件 我已设法通过 includeFiles 包含 Lambda 所需的文件 但现在我在日志中
    • IIS 7如何保留网站子文件夹身份验证设置

      在 IIS 中 您可以使用 功能 视图来设置文件夹级别的设置 请参见屏幕截图 我想对网站的多个子文件夹禁用匿名身份验证 并将这些设置保存到源代码管理中 我想知道 IIS 将这些设置保存在哪里 它们不在网站 web config 或子文件夹内
    • Hibernate为MySQL生成同名索引和外键

      因此 在 Hibernate 管理的一个类中 我有以下属性定义 ManyToOne optional false private Company company 当为 MySQL 创建数据库模式时 Hibernate 会自动为此字段创建外键
    • 等到作用域变量加载完毕后,再在 angular.js 的视图中使用它

      我见过this https stackoverflow com a 11972028 110233 and this https stackoverflow com questions 12265565 angularjs promise