我一直在努力开始使用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,其中第二个正确记录从上面的控制器传递的值。
有关如何解决此问题的任何建议吗?
答案 0 :(得分:0)
您永远不会在TileBoxDir构造函数中为tileList赋值。因此,它总是未定义是正常的。
如果您希望this.tileList
包含scope.tileList
的值,则必须在登录前添加this.tileList = scope.tileList
。