2013-11-21 131 views
1

我想知道如果這是一個錯誤,或者如果我只是失去了一些東西......燼選擇:選擇計算別名VS值計算別名

上ember.Select您可以設置「選擇」來一個計算的別名,它的作品。

selection: Em.computed.alias('parentView.controller.test3') 

您可以將'valueBinding'設置爲一個路徑,它可以工作。

valueBinding: 'parentView.controller.test2' 

但是,您不能將'值'設置爲計算的別名,這是行不通的。

value: Em.computed.alias('parentView.controller.test') 

我已經包含了一個jsfiddle,它在最新的ember上演示了這一點。我在這裏錯過了什麼嗎?我以爲我讀過視圖中的綁定將被默默棄用,我一直試圖使用Em.computed.alias()來代替。

http://jsfiddle.net/3DzzZ/

回答

1

這是因爲valueEmber.Select是計算性能,並要覆蓋該計算財產打破了代碼隱藏

/** 
In single selection mode (when `multiple` is `false`), value can be used to 
get the current selection's value or set the selection by it's value. 

It is not currently supported in multiple selection mode. 

@property value 
@type String 
@default null 
*/ 


value: Ember.computed(function(key, value) { 
    if (arguments.length === 2) { return value; } 
    var valuePath = get(this, 'optionValuePath').replace(/^content\.?/, ''); 
    return valuePath ? get(this, 'selection.' + valuePath) : get(this, 'selection'); 
}).property('selection'), 

selection只是一個無聊的財產

/** 
When `multiple` is `false`, the element of `content` that is currently 
selected, if any. 

When `multiple` is `true`, an array of such elements. 

@property selection 
@type Object or Array 
@default null 
*/ 


selection: null 
+0

值不是在上面列出的代碼中調用或設置的函數,而是從字面上重寫對象上的屬性,在他的第三個麻煩的例子中它不會觸及默認的實現。 – Kingpin2k