与缓存工厂无关的angularjs数据绑定

时间:2014-10-28 04:04:47

标签: angularjs caching data-binding factory

看看这个plunk。 (数据绑定发生在名称列表中但不在电影列表中)

单击名称列表中的名称:详细信息如下所示。如果编辑详细信息中的数据,则列表将使用数据绑定进行更新(如预期的那样)。

对带有电影的列表执行相同操作,单击电影,然后在下面的详细信息中编辑数据。列表没有更新。

两家工厂的唯一区别是“名称”来自静态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);
  });
}
  };
});

名称工厂的唯一区别是这一行:

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

我不明白为什么姓名列表有效而电影没有。

如何使电影详细数据与电影列表绑定。 任何想法?

1 个答案:

答案 0 :(得分:0)

将更新的数据返回到捕获的数据,然后您将获得更新的数据。 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);
  });
}
  };
});