【问题标题】:AngularJS 1.5, attributes in component isn t recoveredAngularJS 1.5,组件中的属性未恢复
【发布时间】:2018-02-02 16:16:29
【问题描述】:

我知道这篇帖子Angular 1.5 component attribute presence 应该回答我的问题,但我做了所有事情都像他们一样,我仍然无法恢复我的数据!如果你知道为什么.. :)

组件:

component('ficheOperation', {
    templateUrl : 'operations/creerOperation.template.html',
    bindings : {
      idOp : '<'
    },
    controller : ['$scope', '$routeParams', '$location',
      function ficheOperationController($scope, $routeParams, $location){
        var self = this;
        console.log(self.idOp);
    }]
})

HTML:

<fiche-operation idOp="33"></fiche-operation>

模板已正确加载,但在我的控制台中,我得到的只是一个可怕的“未定义”。

谢谢

【问题讨论】:

  • 你试过console.log(self)吗?可以显示一些有用的东西..
  • 它显示了包含 idOp 但未定义的对象,真的很奇怪,如果我发现有什么问题我会更新这个
  • 我认为在这里命名函数没有意义。 ficheOperationController 可能会导致您的问题。应该只是function($scope, $routeParams, $location)
  • 我在删除“ficheOperationController”后尝试过,它的工作原理相同,很好,但没有检索属性,但谢谢 :)

标签: angularjs angularjs-components


【解决方案1】:

我在您的代码中遇到的第一个问题是您在模板中使用的绑定名称,您必须将其用作id-op="33" 而不是idOp="33"

<fiche-operation id-op="33"></fiche-operation>

此外,在组件完全初始化之前,您将无法看到绑定属性。因此,您必须使用$onInit 生命周期钩子。

this.$onInit = function() {
    console.log(self.idOp);
};

我根据你的代码制作了一个带有组件的小应用程序,它修复了我在其中发现的错误。

angular
  .module('myApp', [])
  .component('ficheOperation', {
    template: '{{ $ctrl.idOp }}',
    bindings: {
      idOp: '<'
    },
    controller: ['$scope', '$location',
      function ficheOperationController($scope, $location) {
        var self = this;

        self.$onInit = function() {
          console.log(self.idOp);
        };
      }
    ]
  });
<div ng-app="myApp">
  <fiche-operation id-op="33"></fiche-operation>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular.js"></script>

参考

Understanding Components

Creating Custom Directives

【讨论】:

  • 啊,非常感谢,我为 idOp 感到羞耻,但不知道这个 self.$onInit!我会投赞成票,但我没有足够的点^^
  • 投给你@artlessboy,很高兴知道这一点,这样我在面对它时可以避免它;)
猜你喜欢
  • 2017-04-14
  • 2016-09-10
  • 2017-08-12
  • 2017-06-01
  • 2016-09-23
  • 2016-03-29
  • 2016-10-09
  • 2017-01-22
  • 2017-01-21
相关资源
最近更新 更多