1

У меня проблемы при использовании обещания-трекера.обещание-трекер в AngularJS

Я хочу отслеживать разговор. И часть моего кода заключается в следующем:

ЯШ:

angular.module('myModule', ['ajoslin.promise-tracker']) 
    .factory('Conversation', function (promiseTracker) { 
    return { 
     addMessage: function (opts) { 
     /* Post data to server */ 
     var promise = POSTING DATA; 
     promiseTracker('message').addPromise(promise); 
     }, 
     removeMessage: function (opts) { 
     /* Delete data */ 
     } 
    } 
    }) 

    .directive('newMessage', function (Conversation) { 
    return { 
     scope: true, 
     restrict: 'EA', 
     link: function (scope) { 
     scope.addMessage = function() { 
      Conversation.addMessage({ /* Some opts */ }) 
     } 
     } 
    } 
    }) 

    .directive('Tracker', function (promiseTracker) { 
    var opts = { /* Spinner opts */ } 
    return { 
     scope: true, 
     replace: true, 
     restrict: 'EA', 
     templateUrl: 'tracker.html', 
     link: function (scope, element, attrs) { 
     /* new spinner */ 
     scope.tracker = promiseTracker(attrs.tracker); 
     /* And some thing */ 
     } 
    } 
    }) 

нового message.html:

<form name="myForm" new-message> 
    <input type="text" name="content" /> 
    <i tracker="message" ></i> 
</form> 

tracker.html:

<div> 
    <div> 
     <i ng-show="tracker.active()" ng-show="!isHidden"></i> 
    </div> 
    <input type="submit" value="submit" ng-click="addMessage()" ng-disabled="tracker.active()"> 
</div> 

С помощью этого кода он хорошо работает, когда на странице есть ТОЛЬКО ОДНА форма.

НО, когда я добавляю больше формы в шаблон, у него есть некоторые проблемы.

При отслеживании обещания все показания спиннера!

now result(click)

И это то, что я хочу:

hope result(click)

Я полагаю, что есть что-то не так в моей области. Но я не знаю, как это исправить.

Может ли кто-нибудь мне помочь? Thx!

ответ

0

Вы хотите глобальный охват обещание трекера, если вы хотите, чтобы отобразить загрузочный спиннер графику для вашего приложения - пример поднятого непосредственно из официальных документов:

angular.module('app', ['ajoslin.promise-tracker']) 

.factory('myTracker', function (promiseTracker) { 
    return promiseTracker(); 
}) 

.controller('AppCtrl', function ($rootScope, myTracker) { 
    $rootScope.$watch(myTracker.active, function (isActive) { 
    //doSomething() 
    }); 
});