为什么我的范围不会绑定到这个'?

时间:2018-04-06 20:52:27

标签: typescript angularjs-directive binding

我一直在努力开始使用TypeScript并结合Angular 1.6.4,到目前为止情况还顺利。

我已经陷入了指令,使用'范围'和'这个'。似乎无论我如何注册我的指令,这个'这个'永远不会更新。

class TileBoxDir implements ng.IDirective {
    public templateUrl = "App/_shared/elements/tileBox/tileBoxView.html";
    public controller = TileBoxDir;
    public scope = {
        tileList: '='
    }
    public link: (scope, elem, attr) => void;

    public tileList: ITile[];

    static $inject = [];
    constructor() {
        TileBoxDir.prototype.link = (scope, elem, attr) => {
            console.log(this.tileList);
            console.log(scope.tileList);
        }
    }

    static factory(): ng.IDirectiveFactory {
        const directive = () => new TileBoxDir();
        directive.$inject = [];
        return directive;
    }
}

angular.module('app').directive('tileBox', TileBoxDir.factory());

在构造函数中,第一个console.log(...)始终返回undefined,其中第二个正确记录从上面的控制器传递的值。

有关如何解决此问题的任何建议吗?

1 个答案:

答案 0 :(得分:0)

您永远不会在TileBoxDir构造函数中为tileList赋值。因此,它总是未定义是正常的。

如果您希望this.tileList包含scope.tileList的值,则必须在登录前添加this.tileList = scope.tileList