如何使用angularjs工厂使用get和set?

时间:2016-07-28 13:29:44

标签: javascript angularjs

我正在使用angularjs factory设置和获取值,这些是进入mainCtrl的实时消息我希望在$scope.event用户搜索日志时获取当前位于searchLogs()的数据我有数据填充到模态窗口工作,但问题是我一直从mainCtrl获取数据如何停止绑定一旦我有模态窗口中的数据在某些点我不想获取数据,以便用户可以进行搜索可以在$scope

中找到

factory.js

angular.module('App').factory('searchFactory', function ($http) {
    'use strict';
     var logs;
    return {
        getDitLogs : function () {
            return logs;
        },

        setDitLogs : function (data) {
            logs  = data;
        }
    }

});

mainCtrl.js

  $scope.searchLogs = function () {
    $scope.modalInstance = $uibModal.open({
        templateUrl: '/view/modals/searchModal.html',
        controller:'SearchController'
    });
    searchFactory.setDitLogs($scope.event);
}

childCtrl.js

$scope.event = searchFactory.getDitLogs();
    console.log(searchFactory.getDitLogs());

main.html中

 <div class="col-md-12">
            <ul style="list-style: none;">
                <li ng-repeat="message in event track by $index"><span><strong>Log:</strong></span><span>{{message}}</span></li>
            </ul>
        </div>

1 个答案:

答案 0 :(得分:1)

$scope.modalInstance有一个名为opened的属性,这是一个承诺。 一种方法是等待该承诺得到解决,然后设置一个标志,以便searchFactory.setDitLogs()不被调用:

$scope.searchLogs = function () {
if(!$scope.doNotSetDit){
   $scope.modalInstance = $uibModal.open({
       templateUrl: '/view/modals/searchModal.html',
       controller:'SearchController'
   });
   $scope.modelInstance.opened.then(function(){$scope.doNotSetDit =true});
   searchFactory.setDitLogs($scope.event);

} }