首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >angularJS ES6指令

angularJS ES6指令
EN

Stack Overflow用户
提问于 2017-01-10 15:25:31
回答 1查看 1.2K关注 0票数 0

我正在尝试用angular es6开发一个应用程序。我对directve有点问题。以下是我的代码

代码语言:javascript
运行
复制
export default class RoleDirective {
  constructor() {
    this.template="";
    this.restrict = 'A';
    this.scope = {
        role :"@rolePermission"
    };

    this.controller = RoleDirectiveController;
    this.controllerAs = 'ctrl';
    this.bindToController = true;
  }

  // Directive compile function
  compile(element,attrs,ctrl) {
        console.log("df",this)
  }

  // Directive link function
  link(scope,element,attrs,ctrl) {

        console.log("dsf",ctrl.role)
  }
}

// Directive's controller
class RoleDirectiveController {
  constructor () {
    console.log(this.role)
    //console.log("role", commonService.userModule().getUserPermission("change_corsmodel"));
    //$($element[0]).css('visibility', 'hidden');
  }

}

export default angular
  .module('common.directive', [])
  .directive('rolePermission',[() => new RoleDirective()]);

问题是我不能在构造函数中获取角色的值。下面是我的html实现

代码语言:javascript
运行
复制
<a ui-sref="event" class="button text-uppercase button-md" role-permission="dfsd" detail="sdfdsfsfdssd">Create event</a>

如果我对此进行控制台操作,它将获得控制器对象。但是当使用this.role时,它不会得到任何结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-10 16:11:35

好的,所以我设法找出了它是如何工作的。

基本上,作用域值不能在控制器的构造函数上初始化(因为这是在新对象上执行的第一件事),而且还需要考虑绑定。

有一个钩子可以在您的控制器中实现,它可以帮助您处理您的用例:$onInit

代码语言:javascript
运行
复制
class RoleDirectiveController {
  constructor () { 
    // data not available yet on 'this' - they couldn't be
  }

  $onInit() {
    console.log(this.role)
  }
}

这应该是可行的。请注意,当不再依赖$scope保存模型时,这是一种angular1.5+方式。因为如果你使用作用域,你可以把它放在控制器的构造函数中(注入)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41563351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档