Я создал простую директиву, которая показывает все фильмы в моем кино объемеДиректива не обновляется при добавлении новых записей
app
.directive('movieOverview', function() {
return {
template: '<div ng-repeat="movie in movies">Name: {{movie.title}}</div>',
controller: 'searchCtrl',
};
});
Но когда я добавляю свою директиву к моим application.html.erb
он не получает обновляется, когда новая запись добавляется в область фильма. Мне нужно обновить страницу, чтобы увидеть новые записи.
Я думал, что директивы могут быть использованы за пределами областей и т.д.
Это функция addMovie от моего searchCtrl (который я использую с директивой).
$scope.addMovie = function() {
'http://api.themoviedb.org/3/movie/206647?api_key=a8f7039633f2065942cd8a28d7cadad4&append_to_response=releases'
// Search for release dates using the ID.
var base = 'http://api.themoviedb.org/3/movie/';
var movieID = $(event.currentTarget).parent().find('.movieID').text()
var apiKey = 'a8f7039633f2065942cd8a28d7cadad4&query='
var append_to_response = '&append_to_response=releases'
var callback = 'JSON_CALLBACK'; // provided by angular.js
var url = base + movieID + '?api_key=' + apiKey + append_to_response + '&callback=' + callback;
$http.jsonp(url,{ cache: true}).
success(function(data, status, headers, config) {
if (status == 200) {
$scope.movieListID = data;
console.log($scope.movieListID);
var releaseNL;
for (var i = 0; i < $scope.movieListID.releases.countries.length; i++) {
var release = $scope.movieListID.releases.countries[i];
if (release['iso_3166_1'] == 'NL') {
releaseNL = release;
}
}
if(typeof releaseNL === 'undefined'){
// With release date
Notification($scope.movieListID.original_title + ' is toegevoegd, maar heeft nog geen Nederlandse premiere datum.');
createMovie.create({
title: $scope.movieListID.original_title,
release_date: $scope.movieListID.release_date,
image: $scope.movieListID.poster_path,
movie_id: $scope.movieListID.id
}).then(init);
} else {
Notification.success($scope.movieListID.original_title + ' is toegevoegd.');
createMovie.create({
title: $scope.movieListID.original_title,
release_date: releaseNL.release_date,
image: $scope.movieListID.poster_path,
movie_id: $scope.movieListID.id
}).then(init);
};
Важно, чтобы увидеть здесь является .then(init);
var init = function(){
movieService.loadMovies().then(function(response) {
$scope.movies = response.data;
});
}
init();
добавить фильм, а затем выполнить функцию инициализации, которая выстреливает сервис под названием loadMovies
.factory('movieService', ['$http', function($http) {
return {
loadMovies: function() {
return $http.get('/movies.json');
}
};
}])
Какие запросы новых фильмов и затем обновляет представление.
вы можете добавить код, в котором вы добавляете фильм в сферу ? – thsorens
@thsorens Я добавил код с моего контроллера. –
Я бы, вероятно, искал кэширование в вашем json-файле. Вместо того, чтобы перезагружать все, почему бы вам просто не вставить результат в свой список фильмов? $ Scope.movies.push (thenewmovie); – thsorens