Components - 设置组件的样式宽度

Components - set style width of component

我不知道如何用组件做一些事情,即:

这是来自 dom:

的工作渲染进度条示例
<div class="progress-bar bg-color-teal" aria-valuetransitiongoal="25" aria-valuenow="25" style="width: 25%;">25%</div>

这是我在 dom 中得到的,从组件渲染的(不用管属性的值):

<div id="ember294" class="ember-view progress-bar bg-color-teal" aria-valuetransitiongoal="77" aria-valuenow="77" width="25">
    25%
</div>

区别与问题:持有width属性的style属性

和 component.js:

App.ProgBarComponent = Ember.Component.extend({

    classNames: ['progress-bar', 'bg-color-teal'],
    attributeBindings: ['aria-valuetransitiongoal:aria-valuetransitiongoal', 'aria-valuenow:aria-valuenow', 'percent:width'],

    didInsertElement: function () {
        //$('#' + this.elementId).css('width', this.get('percent') + '%');
    }
});

但我无法将基于百分比属性的宽度(以 % 为单位)绑定到样式属性。 现在,didinsertelement 钩子起作用了(我的意思是设置宽度),但我想做(并学习)如何用正常方法做到这一点——就像绑定 aria-values 和百分比一样。

将宽度设置为百分比不起作用 - 要么因为它不在样式属性中,要么因为它不是百分比。我如何使用以下逻辑(或类似逻辑)绑定属性:

 attributeBindings: ['someString:style'],
//someString: 'width:' + this.get('percent') + '%'
//someString: 'width:' + ['percent'] + '%'
//someString: 'width:' + percent + '%'

注释行都不起作用:第一个错误未定义不是函数(对于 get),第二个错误将宽度设置为 "percent%",第三个错误 'percent is not defined'。 ..

我能想到的唯一解决方法是使用路由模型来 return 额外数据,基本上是添加一个新属性:

styleString = 'width: ' + percent + '%'; 

您尝试定义 someString 没有成功,因为它们是在定义组件时设置的,而不是在运行时设置的。将其更改为计算 属性:

someString: function() {
  return "width: " + this.get('percent') + "%";
}.property('percent')

someString 定义为 属性,它取决于 percent 的值。当 percent 改变时,someString.

也会改变