2016-05-21 8 views
1

dbから自分の設定を取得するサービスがあります。私はこのサービスを使って、アプリ全体にさまざまな設定を表示します。私が直面している問題は、configsページに移動して、ページを更新するまで変数が更新されないconfigsを更新するときです。変更時のサービスからの変数の更新

サービス:

app.factory('dataShare', function($rootScope, $log, $q, $http, Data) { 

    var configs= {}; 

     configs.getconfigs=function(){ 

     var deferred = $q.defer(); 

     Data.get('config').then(function(data){ 

      deferred.resolve(data.data); 

     }); 

      return deferred.promise; 

     } 

    return configs; 

}); 

CONTROLLER:

app.controller('authCtrl', function ($scope, $rootScope, $routeParams, $log, $location, $http, dataShare) { 
    dataShare.getconfigs().then(function(data){ 
    $scope.configs = data; 
    }); 
}); 

HTML:任意のヘルプは大幅に

+0

'data.data'は実際にオブジェクトの配列ですか?あるいは単にオブジェクトのようなものです: '{button_name:" somename "}' –

+0

ここには更新方法はありません。デモが役に立ちます – charlietfl

+0

オブジェクトです – Jason

答えて

-1

あなたが設定の "ウォッチ" を置くことができるが高く評価され

<div class="col-md-2"><span ng-if="configs[0].button_name"><a class="btn btn-sm btn-info navbar-btn" ng-href="{{configs[0].button_url}}">{{configs[0].button_name}}</a></span></div> 

オブジェクト。 これを行うには、 "config"の最初の初期化をポストすると、watchサービスに次のように登録されます。 $ scope.config = {}; $スコープ。$ watch( 'config'、function(){ アラート( '設定が更新されました')); //設定が更新されたときに何をしたいかを実行します });ここにあなたがそれについての詳細を読み返すことができます //サービスコール

https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope

EDIT: 問題でもう一回行くの後、私は、「設定」にアップデートを取得することはないと思いますあなたが直面している問題。

あなたの問題はあなたのビューは、モデルが更新されていても更新されていない、あなたは$ applyメソッドを使用する必要がありますということであれば:

dataShare.getconfigs().then(function(data){ 
    $scope.configs = data; 
    $scope.$apply(); 
    }); 

これは、更新されたモデルを反映するために、角ビューを強制します。

+0

サービス中のコントローラに入れますか? – Jason

+0

更新された回答をご覧ください。 – Rambler

+0

私は逃げなければならなかった。私は私のコンピュータに戻ってくるときにこれを試します – Jason

関連する問題