Search global controller


  • Angel

    Minh thu cach dung factory de truyen du lieu sang 1 trang khac

    //su dung 2 controller va 1 factory cho searching
    //search global controller
    app.controller('searchglobal', function ($scope, $state, httpq, $q, sharedata, ngAudio) {
        $scope.isSearchingForFruits = false;
        $scope.value = {};
        $scope.doSearch= function()
        {
            httpq.get("http://x.x.x.x/song/public_html/api/index.php?mod=search&keyword=" + $scope.searchtext).then(function (data)
            {
                $scope.value = data;
                $scope.value = sharedata.sharedObject;
                $state.transitionTo('home.searchresult');
            });
            
        }
    });
    //factory de truyen gia tri sau khi search tra ve ket qua
    app.factory("sharedata", function () {
    
        return { sharedObject: { data: null } }
    
    });
    //search result controller
    app.controller('listsearch', function ($scope, $q, sharedata, ngAudio) {
        $scope.listsearch = sharedata.sharedObject;
    
    });
    

    Minh muon hoi cach khai bao mot conttroler va cach su dung conttroller de truyen du lieu qua lai hai conttroler. Minh lam theo example nay http://stackoverflow.com/questions/16508666/sharing-a-variable-between-controllers-in-angular-js.
    Gia tri cua searchglobal conttroler minh da lay dc va truyen vao $scope.value. Gio minh muon lay data do de truyen sang cho listsearch conttroller


  • Angel

    Mình tìm trên mạng và đã tìm ra cách giải quyết:
    //using like http://excellencenodejsblog.com/angularjs-sharing-data-between-controller/
    //search global controller

    app.controller('searchglobal', function ($scope, $state, httpq, $q, sharedata, ngAudio) {
    $scope.isSearchingForFruits = false;
    $scope.value = {};
    $scope.doSearch= function()
    {
    httpq.get("http://172.18.1.4/arirang_song/public_html/api/index.php?mod=search&keyword=" + $scope.searchtext).then(function (data)
    {
    $scope.value = data;
    //$scope.value = sharedata.sharedObject;
    sharedata.sendData($scope.value);
    $state.transitionTo('home.searchresult');
    });
    }
    });

    //factory de truyen gia tri sau khi search tra ve ket qua

    //v2.0 first search success

    app.factory('sharedata', function ($rootScope, $timeout) {
    var service = {};
    service.data = false;
    service.sendData = function (data) {
    this.data = data;
    $timeout(function () {
    $rootScope.$broadcast('data_shared');
    }, 100);
    };
    service.getData = function () {
    return this.data;
    };
    return service;
    });

    //search result controller

    app.controller('listsearch', function ($scope, $q, sharedata, ngAudio) {
    $scope.$on('data_shared', function () {
    var data = sharedata.getData();
    $scope.listsearch = data.data;
    });
    });



  • Ở đây mình có 2 controller, một cái để lấy giá trị của thanh search, sau khi lấy giá trị, sẽ được truyền dữ liệu thông qua rootscope, để khi giao diện conroller khác được gọi, thì chỉ cần lấy lại dữ liệu.


Log in to reply