2014-01-21 3 views
1

У меня есть простой контроллерКак получить родительский контроллер для пользовательского TextField

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

У меня есть шаблон бэк это ж/пользовательские текстовое поле

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

Моего собственное текстовое поля в JS ниже. Проблема, с которой я сталкиваюсь, заключается в том, что в событии изменения мне нужно вытолкнуть объект в массив родительских контроллеров «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

Если контроллер в этой области не является контроллером родительского представления (я не проверял это, клянусь, у меня есть код, который выглядит почти точно таким же, а контроллер находится в парном ent view))? – Kingpin2k

+0

Если да, то в чем смысл «получить»? (также как я могу узнать потом имя родительского контроллера из REPL в chrome, если я приостановил его здесь с помощью инструкции отладчика)? –

+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

Если вы используете Ember компонент (например, TextField, например) вы могли бы сделать это как так

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

Примечание- это в текущей версии уголек 1.3. x

Смежные вопросы