Я новичок в Ember.js, и я пытаюсь создать приложение, которое имитирует Youtube с помощью их API. В настоящее время у меня есть маршрут, который отвечает за захват исходной информации из Youtube Api, чтобы заполнить страницу при загрузке. У меня есть компонент панели поиска, который используется для сбора ввода от пользователя и повторного заполнения списка с результатами на основе строки. Проблема в том, что пока я получаю данные от пользователя, моя модель маршрута не освежает, чтобы захватить данные обновления из api. Ниже мой код.Обновить модель маршрута от компонента
Шаблон для моих видео маршрут video.hbs:
// app/templates/video.hbs
<div class="row">
{{search-bar}}
<div class="row">
<div class="col-md-12">
<hr>
<br>
</div>
</div>
<div class="row">
<div class="col-md-8">
<div class="row">
{{video-list model=model}}
<div class="col-md-4 pull-right video-container">
{{#if videoId}}
<iframe id="video-player" src="https://www.youtube.com/embed/{{videoId}}"></iframe>
{{else}}
<iframe id="video-player" src="https://www.youtube.com/embed/kEpOF7vUymc"></iframe>
{{/if}}
</div>
</div>
</div>
</div>
</div>
Шаблон для моей панели поиска
// app/templates/components/search-bar.hbs
<div class="col-md-12 col-md-offset-4">
<form class="form-inline">
<div class="form-group" onsubmit="return false">
{{input type="text" class="form-control" value=search id="search" placeholder="Search Videos..."}}
</div>
<button type="submit" {{action "updateSearch"}}class="btn btn-success">Search</button>
</form>
</div>
компонентов для моей панели поиска
// app/components/search-bar.js
import Ember from 'ember';
export default Ember.Component.extend({
userSearch: "",
actions: {
updateSearch: function() {
this.set("userSearch", this.get("search"));
this.modelFor("videos").reload();
}
}
});
Видео Маршрут
// app/routes/video.js
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
var userSearch = this.get("search") === undefined ? "Code" : this.get("search");
this.set("search", userSearch);
var url = "https://www.googleapis.com/youtube/v3/search?part=snippet&q="+ userSearch +"&maxResults=50&key="api key goes here";
return Ember.$.getJSON(url).then(function(data) {
return data.items.filter(function(vid) {
if(vid.id.videoId) {
return vid;
}
});
});
}
});
Я пробовал ранее. Вся страница перезагрузится, и пользовательский вход будет потерян. – DLF85
refresh выстрелирует перед модой, моделью и afterModel hooks. то данные будут обновлены в шаблонах. Похоже, ваш код немного запутался в свойствах 'search' и' userSearch', которые могут быть причиной потери пользовательского ввода. Возможно, вам понадобится ввести queryParam для поиска. – kumkanillam
. Я понимаю, что беру значение из ввода и устанавливая это значение для свойства userSearch. Верно ли мое ожидание, или я делаю что-то другое? – DLF85