我想使用Angular 1.5 的组件从它的单向绑定中获益:<hero-detail hero="ctrl.hero" save="ctrl.save(hero)"></hero-detail>
. 但是,正如 Todd Motto 在他的博客中指出的那样:Todd Motto 的博客:Angular 1.5 中的单向数据绑定,它仅适用于原语。所以我不得不绑定原语:
<hero-detail
name="ctrl.hero.name"
id="ctrl.hero.id"
save="ctrl.save(ctrl.hero)"
></hero-detail>
接下来在组件中,在$onInit
钩子上,hero
从原语制作对象:
HeroDetailController.prototype.$onInit = function(){
this.hero = {
name: this.name,
id: this.id
}
console.log('OnInit called');
}
并在用户单击保存时调用指定函数。奇怪的是,如果用户在组件内更改英雄的名字并单击保存,当调用从父级绑定的函数时,组件没有更改hero-detail
。我做了一个 plunker 来显示我的问题:Plunk 显示 Angular 1.5 中子/父输出绑定的问题- 如果您打开开发者控制台,单击“设置名称...”,然后单击保存,您将看到console.log
s 将显示您来自hero-detail
它的是 Spawn2,但在父上下文中(应该是逻辑,比如与$http
服务交谈),它仍然具有旧值Spawn
。我错过了什么吗?Angular 文档中的代码看起来很像我的代码:
<button ng-click="$ctrl.onDelete({hero: $ctrl.hero})">Delete</button>
我不知道发生了什么事。预先感谢您帮助我处理这个问题。PS 我在使用 Plunk 版本时遇到了一些问题,现在一切正常 - 在浏览器的开发者控制台中,您可以看到更新问题