我在Angular中有以下代碼,這是一個嘗試在同一個網頁上允許同一個Controller的多個實例。問題是,每次創建新實例時,它都將自身添加到實例對象,但會擦除實例對象上的其他屬性(即實例)。我認爲這是一個與Angular無關的簡單的javascript語法問題,但我無法弄清楚。有什麼建議?爲什麼我的對象的屬性被覆蓋?
angular.module('mean.root').controller('ContentA1Controller', ['$scope', '$location', 'Global', 'Data', '$timeout', '$interval', 'Clients', 'Modals', '$element', function ($scope, $location, Global, Data, $timeout, $interval, Clients, Modals, $element) {
// Defaults
$scope.instances = { A: {}, B: {}, C: {}, D: {}, E: {}, F: {} };
// Methods
$scope.createNewInstance = function() {
var instance = $($element).closest('.content-container').attr('id');
// Add ID to content
$($element).find('.content').attr("id", "contentA1instance"+instance);
Data.priceByDay(function(prices){
// Load Chart Data
$scope.instances[instance].data = [1,2,3,4,5];
// Log Instance Object
console.log($scope.instances);
所以,當我添加一個實例給控制器,它的工作原理和我登錄:
$scope.instances = { A: { data: [1,2,3,4,5] }, B: {}, C: {}, D: {}, E: {}, F: {} }
後來,當我添加另一個實例,再次運行createNewInstance()方法時,它會記錄:
$scope.instances = { A: {}, B: { data: [1,2,3,4,5] }, C: {}, D: {}, E: {}, F: {} }
也許它重新運行整個控制器? – Bergi
你說得對,當然它,傑什是多麼明顯,現在我需要重新設計compeltely這個.. – ac360
的[AngularJS服務(http://code.angularjs.org/1.2.14/docs/guide /dev_guide.services.creating_services)是保存跨越多個$ scope的數據的好地方 – Hylianpuffball