我无法理解以下行为,我不是在寻找解决方法,我只是想了解为什么会这样:
我有一个非常基本的组件,我的模板中有#ifndef __IPHONE_3_0
#warning "This project uses features only available in iPhone SDK 3.0 and later."
#endif
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "YourProjectName-Swift.h"
#endif
个绑定。该标题绑定到返回新Date的getter。当只返回Date时,组件将只渲染一次,我认为这是预期的行为。
但是,当我在{{ title }}
中添加setInterval
以更新完全不同的值时,视图将使用新日期重新呈现。这是为什么?视图中没有数据绑定到ngOnInit
值。
_test
如果你想看到它的实际效果,请Codesandbox。我不是在寻找解决方案,只是想了解发生了什么。
答案 0 :(得分:1)
改变检测是如何工作的:执行add_action( 'wp_enqueue_scripts', 'so_50916971_enqueue_scripts' );
function so_50916971_enqueue_scripts(){
if( is_singular( 'movies' ) || is_post_type_archive( 'movies' ) ){
wp_enqueue_style( 'my-movie-style', /* src to .css file */ );
wp_enqueue_script( 'my-movie-script', /* src to .js file */ );
}
}
回调,Angular通过zone.js知道它,但它不可能知道回调正在做什么。因此,它会重新评估模板中使用的所有表达式,以了解它们的值是否已更改,如果有,则会相应地修改DOM。
从模板中绑定的getter返回一个新Date是一个可怕的想法:在每次更改检测时都会调用getter,返回的值将始终不同。你绝对不想要那个。 getter应该是幂等的:当连续两次调用时,它应该返回相同的值。