簡體   English   中英

AngularJS-Getter和Setter以及數據綁定多個控制器

[英]Angularjs - Getter and Setter and databinding multiple controllers

我似乎無法通過服務掌握這種數據綁定控制器的方法。 閱讀此網站上的帖子,由於開銷,人們似乎建議遠離$ watch。 所以我看到很多人都在使用諾言,但似乎無法使最初的獲取數據發揮作用。

我的Signle頁面應用程序在2個單獨的控制器上具有2個表,而第三個控制器具有用於編輯數據的表格。 我有一個簡單的提交按鈕,它將設置新數據,然后在所有控制器之間重新同步。 這是我到目前為止所得到的:

第一控制人

GDI_App.controller('first_Controller', function ($scope, Service) {

    Service.get_data();
    $scope.Current.incidents = Service.current_data(); //returns $$State;

});

第二控制器

GDI_App.controller('second_Controller', function ($scope, Service) {

    Service.get_data();
    $scope.Current.incidents = Service.current_data(); //returns $$State;

});

第三個設置提交數據的控制器

GDI_App.controller('third_Controller', function ($scope, Service) {

   $scope.submit = Service.set_data(data);

});

服務

GDI_App.factory('Service', function($q) {

    var Current ={}
    Current.Data = [
       { "Data1": "123123", "Data2": "15437"  },
       { "Data1": "432234", "Data2": "146"  },
       { "Data1": "45654", "Data2": "3534"  },
       { "Data1": "76587", "Data2": "78978"  },
       { "Data1": "2342", "Data2": "5345878"  },
       { "Data1": "178", "Data2": "34534"  },
       { "Data1": "173838", "Data2": "354534"  },
    ];

    return{

         get_data: function(){
            return $q.when(Fake_Data)
            .then(function(data) {
                return data;
            });
        }

        set_data: function(data){
            Current.Data = data;
        }

    }
});

有人知道我會想念什么嗎?

對於要更新而不必從服務中顯式獲取數據的控制器,我建議您使用一個單獨的函數,該函數從設置器設置的服務中獲取“緩存”值。

現在,您已經綁定到提取,因此基本上在每個摘要上(如果使用了該調用),如果直接將其鏈接到函數,則它將繼續獲取該承諾。 因此,取而代之的是-使用getter並對控制器中的作用域模型進行調用的別名。

有了它,它只會在控制器負載上獲取它,除非您使用了手表,否則不知道何時更新/獲取該模型。

$scope.display = Service.get;

在視圖中,只需執行

<div ng-repeat="mystuff in display()"></div>

因此,一旦通過其他任何服務更新了該值,它將在下一個摘要中進行更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM