1

我已经搜索过了,唯一能想到的是我不了解编译功能如何工作的基本知识。

这是我所拥有的

angular.module("app", [])
.directive("foo", function(){
  return {
    scope: {},
    controller: function() {
      this.someValue = 23;
    },
    contollerAs: "ctrl",
    compile: function(tElem, tAttrs) {
      tElem.html("<h1>Data:  {{ctrl.someValue}}</h1>");
    },
    template: '<h1>test</h1>'
  }
});

这将显示:数据:并且似乎没有看到“someValue”变量。但是,当我使用范围而不是 controllerAs 语法时,它可以工作。

//this works fine
angular.module("app", [])
.directive("foo", function(){
  return {
    scope: {},
    controller: function($scope) {
      $scope.someValue = 23;
    },
    contollerAs: "ctrl",
    compile: function(tElem, tAttrs) {
      tElem.html("<h1>Data:  {{someValue}}</h1>");
    },
    template: '<h1>test</h1>'
  }
});

这显示:数据:23

我在这里缺少什么吗?我是否正确使用编译?手册似乎没有那么有用。

4

1 回答 1

2

因为有错别字。它是controllerAs,不是contollerAs

建议使用templatefunction而不是compile. 这使得将来升级到组件更容易,也可以避免出现问题 -compile如果没有虚拟<h1>test</h1>模板,上面的指令将无法正常工作。

于 2017-01-18T07:46:02.430 回答