我正在尝试使用此代码:
var Table = function($elem) {
this.PROPERTIE.element = $elem;
this.init();
};
Table.prototype.PROPERTIE = {
secondElement: $('.second') // this exists in the HTML
};
Table.prototype.init = function() {
console.log(this.PROPERTIE.element) -> output the element;
console.log(this.PROPERTIE.secondElement) -> undefined
};
var tableDirective = function() {
return {
restrict: 'M',
link: function($scope, $elem) {
return new Table($elem);
}
};
};
angular.module('app').directive('tableDirective', tableDirective);
如果我试图在我的构造函数类的任何方法中获取一个html元素,我可以,但如果我尝试在对象中存储相同的元素,他将是未定义的。
为什么对我来说非常明显。是因为$('。second');当PROPERTIE对象尝试丰富它们时不存在,因为该元素在模板内部,并且我使用ng-include拉动该模板。
我能解决这个问题吗?在脚本运行之前等待ng-include或相关的东西?我想尝试使用$ timeout和setTimeout。
先谢谢你们。
答案 0 :(得分:0)
Table.prototype.PROPERTIE = {
secondElement: function(){ return $('.second')}
};
Table.prototype.init = function() {
console.log(this.PROPERTIE.element)
console.log(this.PROPERTIE.secondElement())
};
在脚本加载时发生的$('.second')
定义期间,您正在调用jq函数Table.prototype.PROPERTIE
。将其更改为方法是有效的,因为在脚本加载时您没有分配任何内容。