构造时的角度组件绑定

时间:2016-02-24 00:47:58

标签: javascript angularjs

我有一个组件:

0

使用基本控制器:

import template from './login.html';
import controller from './login.controller';
import './login.less';

let loginComponent = {
  restrict: 'E',
  bindings: {
    redirect: '@'
  },
  template,
  controller,
  controllerAs: 'vm'
};

export default loginComponent;

问题是import angular from 'angular'; let LoginController = [ 'AuthService', '$resource', '$state', 'config', (AuthService, $resource, $state, config) => { var vm = { redirect: '' }; var initialize = () => { if (AuthService.authenticated()) { loginSuccess(); } }; var loginSuccess = () => { console.log(vm.redirect); if (vm.redirect) { $state.go(vm.redirect); } }; initialize(); return vm; }, ]; export default LoginController; 属性在构造时(调用redirect方法时)不可用。如何在控制器构造期间访问此属性?如果没有办法,那么观看此属性变为可用的最佳方法是什么,然后调用initialize函数?

解决方案:

initialize正是我想要的方法。这是未来用户的更正控制器:

$onInit

1 个答案:

答案 0 :(得分:3)

由于Angular指令链接的工作原理,您无法访问控制器构造中的绑定。

它将在link函数in指令中,在组件中(这是指令的糖语法)可用魔法$onInit controller method

  

在元素上的所有控制器都有后,在每个控制器上调用   已经构建并初始化了它们的绑定(并在之前   前& post链接此元素指令的函数)。这个   是一个为控制器提供初始化代码的好地方。

列出的控制器的问题在于它使用箭头功能而不是常规功能。控制器是控制器构造函数的实例,并提供this上下文。

无需发明initialize方法,现在应为this.$onInit