Ember - 子组件通过父组件更新来自查询参数的属性

时间:2016-10-12 09:49:05

标签: javascript ember.js

我正在使用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()

2 个答案:

答案 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中的操作更新它。这种方式似乎有效