我在ngOnInit方法中初始化一个库,如下所示:
ngOnInit() {
this.$grid = jQuery('.grid').masonry({
// options
itemSelector: '.grid-item',//,
columnWidth: 384,
gutter: 24
});
......
}
然后我在ngOnInit内部从该实例调用此方法:
// bind event listener
this.$grid.on( 'layoutComplete',function onLayout() {
console.log(this.$grid);
} );
所以它的方法最终看起来像这样:
ngOnInit() {
this.$grid = jQuery('.grid').masonry({
// options
itemSelector: '.grid-item',//,
columnWidth: 384,
gutter: 24
});
// bind event listener
this.$grid.on( 'layoutComplete',function onLayout() {
console.log(this.$grid);
} );
}
但是我不明白为什么console.log打印的结果是未定义的,如果实际上是这样的话。调用console.log的$grid。
我需要在该方法中再次使用该实例来执行以下操作:
// bind event listener
this.$grid.on( 'layoutComplete',function onLayout() {
this.$grid.masonry('layout');
} );
但我不能,因为在这个方法中,$grid是未定义的,这对我来说毫无意义。
有什么想法吗?
尝试在AfterViewInit回调生命周期内调用这些。
ngAfterViewInit(): void {
this.$grid = jQuery('.grid').masonry({
itemSelector: '.grid-item',
columnWidth: 384,
gutter: 24
});
this.$grid.on( 'layoutComplete',() => {
console.log(this.$grid);
});
}
NgAfterViewInit():Angular初始化组件的视图和子视图后响应。在第一个ngAfterContentChecked()之后调用一次。仅组件钩子。
参见角度文档https://angular.io/guide/lifecycle-hooks
这是因为您绑定事件的方式。
在您的代码中,此是指您传递给函数上的匿名函数的执行上下文(例如自身)。
如果要保留此
的上下文,必须使用箭头函数
,如下所示:
this.$grid.on( 'layoutComplete', () => {
this.$grid.masonry('layout');
});
问题内容: 我有一个javascript类,每个方法都返回一个Promise。我想知道为什么在和中未定义。有没有更正确的方法来编写此代码? 我可以使用以下方法解决此问题: 但是不能完全确定为什么有必要。正在消灭? 问题答案: 始终是调用方法的对象。但是,将方法传递给时,您不会调用它!该方法将存储在某个地方,稍后再从那里调用。如果要保存,则必须这样做: 或者,如果您必须在ES6 之前的版本中进行操作
问题内容: 我一直在跟随一个教程,教科书向我保证这可以工作,但是 错误:[ng:areq]参数’SimpleController’不是一个函数,未定义 为什么?我掉毛了,在它上面上下移动,看不到问题。为什么出现未定义状态? 问题答案: 我的猜测是您使用的angular.js版本是更新的。 有一个重大变化,即: 默认情况下 , angular将不再寻找控制器。有关更多详细信息,请参见3f2232b5
问题内容: 我有一个javascript类,每个方法都返回一个Promise。我想知道为什么在和中未定义。有没有更正确的方法来编写此代码? 我可以使用以下方法解决此问题: 但是不能完全确定为什么有必要。正在消灭? 问题答案: 始终是调用方法的对象。但是,将方法传递给时,您不会调用它!该方法将存储在某个位置,稍后再从那里调用。如果要保存,则必须这样做: 或者,如果您必须在ES6之前的版本中执行此操作
我经常使用静态关键字,但不清楚静态关键字主要用途是什么。可以任意定义,这是在面向对象的java显示方法中使用的
问题内容: 启动有问题。 我初始化了我的Firebase应用程序。但是auth()无法正常工作 返回未定义。 它还给出了功能错误 错误: TypeError:auth.createUserWithEmailAndPassword不是函数 问题是什么? 问题答案: Firebase3.0.5中没有用于node.js的方法createUserWithEmailAndPassword,请参阅文档
问题内容: 编辑: 从Java 8开始,接口中现在允许使用静态方法。 例子如下: 当然这行不通。但是为什么不呢? 可能的问题之一是,当你致电时会发生什么: 在这种情况下,我认为它应该只调用一个空方法(即{})。所有子类都将被强制实现static方法,因此在调用static方法时它们都很好。那为什么不可能呢? 编辑:我想我正在寻找比“因为这就是Java的方式”更深的答案。 有特定的技术原因为什么不能