不断轮询 Aurelia 的变化检测工作方式吗?
Is constant polling the way Aurelia's change detection is working?
我得到了 div,if.bind 按照这个问题中的建议工作:。但后来我注意到框架不断检查 viewModel 上的 showTemplate,大约每秒 10 次。堆栈如下:
execute._prototypeProperties.visible.get (welcome.js:29)
getValue (dirty-checking.js:93)
isDirty (dirty-checking.js:127)
check (dirty-checking.js:63)
(anonymous function) (dirty-checking.js:49)
应该是这样的吗?好像对资源不是很友好
此致,尤金。
Aurelia 使用 Object.observe
获得简单的 Javascript 属性。如果 showTemplate
是一个函数或 getter/setter,那么 Aurelia 目前会恢复到脏检查。这可以通过声明函数的依赖关系来删除。此处概述:https://github.com/aurelia/binding/pull/41
我创建了一个 Aurelia Skeleton 项目的版本来实现这个:https://github.com/ashleygrant/skeleton-navigation/tree/declare_dependencies
要实现这一点,您必须切换到使用 aurelia-main
属性。添加 main.js
文件:
import {LogManager} from 'aurelia-framework';
import {ConsoleAppender} from 'aurelia-logging-console';
import {ComputedObservationAdapter, ObjectObservationAdapter} from 'aurelia-framework';
LogManager.addAppender(new ConsoleAppender());
LogManager.setLevel(LogManager.levels.debug);
export function configure(aurelia) {
aurelia.use
.defaultBindingLanguage()
.defaultResources()
.router()
.eventAggregator();
aurelia.container
.registerSingleton(ObjectObservationAdapter, ComputedObservationAdapter);
aurelia.start().then(a => a.setRoot('app', document.body));
}
然后,在welcome.js
中添加如下导入语句:
import {declarePropertyDependencies} from 'aurelia-framework';
然后在Welcome
class外,添加以下方法调用:
declarePropertyDependencies(Welcome, 'fullName', ['firstName', 'lastName']);
我得到了 div,if.bind 按照这个问题中的建议工作:
execute._prototypeProperties.visible.get (welcome.js:29)
getValue (dirty-checking.js:93)
isDirty (dirty-checking.js:127)
check (dirty-checking.js:63)
(anonymous function) (dirty-checking.js:49)
应该是这样的吗?好像对资源不是很友好
此致,尤金。
Aurelia 使用 Object.observe
获得简单的 Javascript 属性。如果 showTemplate
是一个函数或 getter/setter,那么 Aurelia 目前会恢复到脏检查。这可以通过声明函数的依赖关系来删除。此处概述:https://github.com/aurelia/binding/pull/41
我创建了一个 Aurelia Skeleton 项目的版本来实现这个:https://github.com/ashleygrant/skeleton-navigation/tree/declare_dependencies
要实现这一点,您必须切换到使用 aurelia-main
属性。添加 main.js
文件:
import {LogManager} from 'aurelia-framework';
import {ConsoleAppender} from 'aurelia-logging-console';
import {ComputedObservationAdapter, ObjectObservationAdapter} from 'aurelia-framework';
LogManager.addAppender(new ConsoleAppender());
LogManager.setLevel(LogManager.levels.debug);
export function configure(aurelia) {
aurelia.use
.defaultBindingLanguage()
.defaultResources()
.router()
.eventAggregator();
aurelia.container
.registerSingleton(ObjectObservationAdapter, ComputedObservationAdapter);
aurelia.start().then(a => a.setRoot('app', document.body));
}
然后,在welcome.js
中添加如下导入语句:
import {declarePropertyDependencies} from 'aurelia-framework';
然后在Welcome
class外,添加以下方法调用:
declarePropertyDependencies(Welcome, 'fullName', ['firstName', 'lastName']);