4

传递给组件的绑定在 html 中工作,但在控制器中未定义。

<hero value="foo"></hero>

hero.component.js

import template from './hero.html';
import controller from './hero.controller';

let heroComponent = {
  restrict: 'E',
  bindings: {
    value: '@'
  },
  template,
  controller
};

HeroController.js

class HeroController {
  constructor() {
    this.name = 'hero';
    console.log(this.value); // undefined!
  }
}

英雄.html

<section class="hero">
  <h1>AngularJs ES6 Example</h1>
  <!-- Value is works within template -->
  <h3>You can find me inside {{ $ctrl.name }}.html {{ $ctrl.value }}</h3>
</section>

我正在使用角度版本1.5.0

4

2 回答 2

3

它是未定义的,因为值是在 api 调用后加载的,使用 ng-if解决了问题

<hero ng-if="$ctrl.value" value="$ctrl.value"></hero>
于 2016-11-03T07:00:15.703 回答
3

在构造函数调用期间不太可能解析绑定。Angular 内部所做的是实例化控制器并在调用构造函数时注入依赖项。然后,填充绑定。

您应该使用生命周期挂钩$onInit$onChanges代替。在此处查看开发人员指南(关于生命周期挂钩的相关部分大约在页面的一半处)。

于 2016-11-02T12:43:34.507 回答