gpt4 book ai didi

javascript - Angular2,设置超时变量更改后 View 不更新

转载 作者:太空狗 更新时间:2023-10-29 16:53:18 25 4
gpt4 key购买 nike

我正在尝试将我的第一个 angular2 应用程序设置为实验,并使用最新的测试版。

我遇到了一个奇怪的问题,我在 View 中使用的变量在设置超时后没有更新。

@Component({
selector: "my-app",
bindings: []
})

@View({
templateUrl: "templates/main.component.html",
styleUrls: ['styles/out/components/main.component.css']
})

export class MainComponent {

public test2 = "initial text";

constructor() {
setTimeout(() => {
this.test2 = "updated text";
}, 500);

}
}

如您所见,我有一个名为 test2 的变量,在构造函数中我将超时设置为 500 毫秒,我将值更新为“更新的文本”。

然后在我看来 main.component.html 我只是使用:

{{ test2 }}

但是这个值永远不会被设置为“更新文本”并且永远保持在“初始文本”,即使更新部分正在被点击。如果我遵循 angular2 教程,他们不会真正给我这个解决方案的答案。想知道是否有人知道我在这里缺少什么。

编辑:我正在使用的完整代码,包括 Bootstrap 和 html 等

<html>
<head>
<title>Angular 2</title>
<script src="/node_modules/systemjs/dist/system.src.js"></script>
<script src="/node_modules/reflect-metadata/reflect.js"></script>
<script src="/node_modules/angular2/bundles/angular2.dev.js"></script>

<script src="/node_modules/q/q.js"></script>
<script src="/node_modules/jquery/dist/jquery.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0">

<script src="/bower_components/breeze-client/breeze.debug.js"></script>
<script src="/bower_components/datajs/datajs.js"></script>
<script src="/bower_components/bootstrap-less/js/collapse.js"></script>
<script src="/bower_components/bootstrap-less/js/modal.js"></script>

<script src="/bower_components/signalr/jquery.signalR.js"></script>
<script src="http://localhost:64371/signalr/js"></script>

<link href="styles/out/main.css" type="text/css" rel="stylesheet" />
<script>
System.config({
map: {
rxjs: '/node_modules/rxjs' // added this map section
},
packages: {'scripts/out': {defaultExtension: 'js'}, 'rxjs': {defaultExtension: 'js'}}
});

System.import('scripts/out/main');

</script>
</head>
<body>
<my-app>loading...</my-app>
</body>
</html>

带有 Bootstrap 的 main.ts:

import {Component} from 'angular2/core';
import {bootstrap} from 'angular2/platform/browser'
import {COMMON_DIRECTIVES} from './constants';
import {MainComponent} from './components/main.component'
bootstrap(MainComponent);

主要组件.html

{{ test2 }}

最佳答案

正如 Vlado 所说,它应该可以工作;-)

我认为 angular2-polyfills.js 库应该包含在您的页面中。我看不到它。该文件本质上是 zone.js 和 reflect-metadata 的混搭。区域参与更新检测。

您可以观看 Bryan Ford 解释它是什么的视频:https://www.youtube.com/watch?v=3IqtmUscE_U .

希望对你有帮助,蒂埃里

关于javascript - Angular2,设置超时变量更改后 View 不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34491871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com