【问题标题】:How to pass controller observed property in component如何在组件中传递控制器观察到的属性
【发布时间】:2016-05-04 09:42:53
【问题描述】:

我正在开发一个应用程序,我将在控制器中观察到的属性传递给组件,但我得到了 undefined 值。我正在使用 ember 1.6

我如何称呼组件:-

{{range-slider min="0" max="100" step="1" value=currentVal}}

组件实现是:-

App.RangeSliderComponent = Ember.Component.extend({
tagName:'',
currentValue:function(){
    return this.get('value');
}.property('value'),

minValue:function(){
    return this.get('min');
}.property('min'),

didInsertElement:function(){
    console.log("component with currentValue="+this.get("currentValue")+" minValue="+this.get('minValue'));

}

})

currentVal 用作组件值是控制器中观察到的属性。每当我滑动滑块时,currentVal 都会更改,因为它与组件绑定。默认值为 50。控制器工作正常。

控制器部分是:-

currentVal:50,

currentValChanged:function(){
    console.log("currentVal changed");
}.observes('currentVal'),

在组件中,我得到了正确的 min 值,但没有得到 value。它即将到来未定义。

如何获取组件中的value属性?

更新

我可以通过组件中的以下方法获取变量:-
1)如果我将变量直接传递给具有静态值的组件,它就可以工作。 例如,在范围滑块组件中传递的 ma​​x 值。
2)如果我传递一个在控制器中定义的静态变量 例如在控制器中

dummyValue:2345,

如果我将虚拟值传递给组件,我可以在组件部分读取它。

但如果 属性是计算属性,则它不起作用。

【问题讨论】:

  • 那么currentValue 与别名有什么不同,您可以用currentValue: Ember.computed.alias('value') 更简单地定义它吗?您的控制器是否正在观察某些属性应该与任何事情无关。
  • 即使使用 computed.alias() 也无法正常工作
  • 只是猜测,但属性名称value 可能存在问题,请尝试将其更改为val

标签: ember.js ember-components


【解决方案1】:

我怀疑您的控制器是否在控制器部分为 currentVal 属性设置了未定义的值。请查看正在运行的twiddle..

【讨论】:

  • 谢谢。这真的很有帮助。
【解决方案2】:

如果您使用value=currentVal,您必须访问它this.get("value")。如果您想使用this.get("currentValue") 访问它,则需要使用该名称传递它:currentValue= currentVal

【讨论】:

  • this.get("value") 不起作用。 currentValue 是组件中的计算属性。 this.get("value") 应该在 currentValue 属性中工作,但它不工作。
  • 你能提供一个不工作的 ember-twiddle 吗?它应该可以工作。
【解决方案3】:

我希望听起来不是很愚蠢,但是您是否尝试在 currentVal}} 之间放置一个空格?它认真与一些帮手一起为我工作。

像这样:

{{range-slider min="0" max="100" step="1" value=currentVal }}

真的,我需要使用 ember-xselect 执行此操作,否则无法正常工作。

【讨论】:

  • 这似乎不太可能。
  • @torazaburo 是的,我知道,如果我处于你的位置,可能会认为这很愚蠢,但 ember-xselect 确实需要它,所以我认为这可能是 Handlebars 在编写变量名时的普遍问题或结束 }} 旁边的赋值表达式。
猜你喜欢
  • 1970-01-01
  • 2011-06-13
  • 2020-10-30
  • 1970-01-01
  • 2020-02-12
  • 2020-06-05
  • 1970-01-01
  • 1970-01-01
  • 2017-06-15
相关资源
最近更新 更多