2014-10-28 63 views
0

看看這個plunk。 (數據綁定正在名單列表中發生,但不在電影列表中)angularjs數據綁定緩存工廠不起作用

單擊名稱上的名稱名稱:詳細信息如下所示。如果您在詳細信息中編輯數據,則列表將使用數據綁定進行更新(如預期的那樣)。

對帶電影的列表執行相同操作,單擊電影並編輯下面詳細信息中的數據。該列表未更新。

2個工廠的唯一區別是,「名稱」來自靜態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){...} 

我不明白爲什麼名稱列表工程和電影不。

如何使電影詳細數據綁定與電影列表。 有什麼想法?

回答

0

將更新的數據返回到捕獲的數據,然後您將獲得更新的數據。 app.factory( 'moviesFactory',函數($ 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); 
    }); 
} 
    }; 
}); 
+0

感謝名單,它的工作你知道爲什麼它的工作原理與JSON文件,但不與API我不明白。 – user2062455 2014-10-28 04:44:58