2014-01-21 58 views
1

我有一個簡單的控制器如何獲得父控制器自定義文本字段

App.UploadController = Ember.Controller.extend({ 
    toUpload: Ember.A([]) 
}); 

我有一個模板在JS /自定義文本字段支持該W

<div> 
{{view App.UploadFileView name="file" contentBinding="content"}} 
</div> 

我的自定義文本字段在下面。我遇到的問題是,在更改事件中,我需要將對象推入父控制器的「toUpload」數組中,但是當我在parentView.controller上執行操作時,它未定義。我如何在這種情況下獲得父母?

App.UploadFileView = Ember.TextField.extend({ 
    type: 'file' 
    change: function() { 
    var foo = Ember.Object.create(); 
    this.get('parentView.controller').get('toUpload').pushObject(foo); 
    } 
}); 
+0

不應該在這個範圍內的控制器是父視圖的控制器(我沒有測試這個,我發誓我有一些看起來幾乎完全相同的代碼,並且控制器在par ent視圖的控制器)? – Kingpin2k

+0

如果是這樣,在這種情況下,「get」應該是什麼樣子? (如果我在這裏用調試器語句暫停它,我怎麼能從chrome中的REPL找到父控制器的名稱)? –

+0

我剛剛看到你在擴展文本字段,這是我的實現,控制器是範圍內的控制器。文本字段是一個組件,所以當它說視圖時它本質上是一個騙子,所以你不能像往常一樣得到控制器等 – Kingpin2k

回答

1

的文本字段是一個組件,所以家長控制器不存在,你需要使用sendAction得到的東西出來。

這是我的上傳按鈕的實現,只是一個視圖。

App.UploadFileView = Ember.View.extend({ 
    tagName: 'input', 
    attributeBindings: ['type'], 
    type: 'file', 
    change: function() { 
    console.log(this.get('controller')); 
    } 
}); 

http://emberjs.jsbin.com/oQaReMi/1/edit

+0

- 你是男人! –

0

如果您使用的是灰燼組件(如文本字段爲例),你會做到這一點,像這樣

App.UploadFileView = Ember.TextField.extend({ 
    change: function() { 
    console.log(this.get('targetObject')); 
    } 
}); 

注意 - 這是燼1.3的最新版本。 x

相關問題