Привязка данных angularjs с фабрикой кеша не работает

взгляните на этот фрагмент. (привязка данных происходит в списке имён, но не в списке фильмов)

щелкните имя в списке имен: подробности показаны ниже. Если вы редактируете данные в деталях, список обновляется с привязкой данных (как и ожидалось).

сделайте то же самое со списком фильмов, нажмите на фильм и отредактируйте данные в деталях ниже. список не обновляется.

единственная разница в двух фабриках заключается в том, что «имена» взяты из статического файла json, а «фильмы» — из API фильмов.

это моя кинофабрика:

app.factory('moviesFactory', function($http) {
var cachedData;

 function getData(callback) {
if (cachedData) {
  callback(cachedData);
} else {
  $http.get('https://yts.re/api/list', {
    params: {
      quality: "3D",
      limit: 3
    }
  }).success(function(data) {
    cachedData = data.MovieList;
    callback(data.MovieList);
  });
}
  }
  return {
getAll: getData,
getOne: function(itemId, callback) {
  getData(function(data) {
    var movie = data.filter(function(entry) {
      return entry.MovieID === itemId;
    })[0];
    callback(movie);
  });
}
  };
});

единственная разница в именах factory - это строка:

$http.get('foo.json').success(function(data){...}

Я не понимаю, почему список имен работает, а фильмы - нет.

Как я могу сделать привязку данных фильмов к списку фильмов. Любые идеи?


person user2062455    schedule 28.10.2014    source источник


Ответы (1)


верните обновленные данные в перехваченные данные, после чего вы получите обновленные данные. app.factory('moviesFactory', function($http) { var cachedData;

 function getData(callback) {
if (cachedData) {
  callback(cachedData);
} else {
  $http.get('https://yts.re/api/list', {
    params: {
      quality: "3D",
      limit: 3
    }
  }).success(function(data) {
    cachedData = data.MovieList;
    callback(cachedData);
  });
}
  }
  return {
getAll: getData,
getOne: function(itemId, callback) {
  getData(function(data) {
    var movie = data.filter(function(entry) {
      return entry.MovieID === itemId;
    })[0];
    callback(movie);
  });
}
  };
});
person user3722785    schedule 28.10.2014
comment
спасибо, это сработало. вы знаете, почему он работает с файлом json, но не с API? Я не понимаю. - person user2062455; 28.10.2014