我正在使用Ember 1.13.0并尝试更新来自子组件中查询参数的属性。
在子组件js中,当" time"未定义,我将其设置为1200.如果我记录"时间"的值( this.get(' time'))在子组件中,在我更新之后,我可以看到它的值正在更新。但它没有通过父组件行动。
那么,为什么我不能在父母身上获得它的价值,如果它在孩子中得到更新?
顶级组件:
T
父组件:
{{parent-component time = model.params.incomingTime}}
父组件JS:
<div>hello</hello>
{{child-component time=time}}
儿童组件:
actions: {
submit:function(){
var t = this.get('time')
}
}
儿童组件JS:
<div>Time is {{currentTime}}</div>
热门级别路线:
currentTime: function(){
if(this.get('time')){
return time;
} else {
this.set('time','1200');
return '1200'
}
}.property()
答案 0 :(得分:1)
incomingTime
属性是params
,如果是这样,您的代码就可以运行。否则它会失败。
{{parent-component time=model.params.incomingTime}}
<强> UPDATE1 强>:
发送整个model.params
可能会有效。
顶级组件:
{{parent-component modelParams=model.params}}
父组件:
<div>hello</hello>
{{child-component modelParams=modelParams}}
父组件JS:
actions: {
submit:function(){
var t = this.get('modelParams.time')
}
}
子组件:
<div>Time is {{currentTime}}</div>
子组件JS:
currentTime: function(){
if(this.get('modelParams.time')){
return time;
} else {
this.set('modelParams.time','1200');
return '1200'
}
}.property()
答案 1 :(得分:0)
我通过在父组件中声明新CP并简单地返回&#34; time&#34;从那以后。现在我将CP传递给child,然后通过parent中的操作更新它。这种方式似乎有效