【发布时间】:2016-01-15 01:27:58
【问题描述】:
我正在尝试使用 Angular2(没有 Angular1 的经验),我已经成功地使用了数据绑定,但我现在想在组合中添加 Promise 以模拟对数据的异步请求。 在下面的代码中,将 newData 设置为对象字面量可以正常工作,但将其设置为现有的填充对象则不起作用。
在尝试了一天多之后,我需要一些帮助。 我正在寻找最简单的方法来让我的承诺返回一些数据并让它更新模板中的插值。我读过有时会为此使用区域,但目前,希望将其保持在最低限度,以帮助我理解(因此我从示例代码中删除了工厂类、接口和依赖注入)
我怀疑答案在this victorsavkin post,但以我目前的理解水平,它超出了我的范围。
http://plnkr.co/edit/amLIZWe5UI9jlvpVGv9V?p=preview
import {Component} from 'angular2/core'
import {MockData} from './mock-data.ts'
@Component({
selector: 'my-app',
providers: [],
template:`
<h1>
Hello {{data.name}}
</h1>`,
directives: []
})
export class App {
public data = {}
constructor() {
new Promise((response, reject) => {
setTimeout(function() {
newData = {name:'Sid'} //works
//newData = MockData //doesn't work
response(newData)
}, 1000)
})
.then(response => this.data = response)
}
}
模拟数据.js
exports MockData = {
name:'Nancy'
}
【问题讨论】:
-
我认为问题不在于 Promise,而在于导入。如果您从构造函数中删除所有内容并仅添加
console.log(MockData)它会产生相同的错误... -
您发现了我不正确的路径拼写错误,我应该从控制台输出中发现,但这不是我想要解决的问题。甚至将 MockData 直接移动到 app.js 中也失败了。
-
在 IE11 中运行也有问题,但这是另一个问题:github.com/johnpapa/angular2-tour-of-heroes/issues/41
标签: javascript typescript angular