나는이 컨트롤러 기능이 작업을 수행하기 전에 완료 될 때까지 내 지시를 기다려야합니다 :내 컨트롤러가 다른 것들
$scope.keypadEnter = function() {
userService.isCodeValid($scope.code).then(function (result)
{
if (JSON.parse(result.data)) {
$scope.highlight("lime").then(function() {;
console.log("redirecting ...");
$location.path('/clockin');
});
}
else
{
$scope.highlight("red");
}
$scope.code = "";
});
};
컨트롤러는 다음의 경우에 true를 반환하는 서비스 (userService) 함수 (isCodeValid)를 호출 지정된 코드는 유효하고, 그렇지 않으면 false입니다.
봐 밀접하게이 두 라인에서 :
angular.module('clockin').directive('grDisplay', function() {
return {
restrict: 'A',
link: function ($scope, $element, $attrs) {
$scope.highlight = function (color) {
$element.effect("highlight", { color: color }, 500);
}
}
};
});
나는이 두 줄을 싶습니다
$scope.highlight("lime");
$location.path('/clockin');
$의 scope.highlight은 JQuery와 (강조) 애니메이션을 트리거하는 지시 기능입니다 동기식, 강조 표시 애니메이션 ($scope.highlight(...)
) 리디렉션되기 전에 볼 수 있습니다. ($location.path(...)
).
어떻게하면됩니까?
업데이트 : 다음에
angular.module('clockin').directive('grDisplay', function ($q, $timeout) {
return {
restrict: 'A',
link: function ($scope, $element, $attrs) {
$scope.highlight = function (color) {
var deferred = $q.defer();
$element.effect("highlight", { color: color }, 500)
$timeout(deferred.resolve(), 5000);
return deferred.promise;
}
}
};
});
그리고 내 컨트롤러 기능 : 나는 (I 5 초에 타임 아웃을 과장되게 한) 다음에 내 지시 코드를 변경 한
$scope.keypadEnter = function() {
userService.isCodeValid($scope.code).then(function (result)
{
if (JSON.parse(result.data)) {
$scope.highlight("lime").then(function() {;
console.log("redirecting ...");
$location.path('/clockin');
});
}
else
{
$scope.highlight("red");
}
$scope.code = "";
});
};
실행중인 경우에도 동일한 결과가 나타납니다. 강조 표시는 볼 수 있지만 완료 할 시간이 없습니다. 나는 방향을 바꾼다.
그리고이 오류가 :
TypeError: Objet expected at Anonymous function
(hxxp : // 로컬 호스트 : 18000/스크립트/angular.js : 14261 : 11) completeOutstandingRequest 에서 (hxxp : // 로컬 호스트 : 18000/스크립트/angle.js : 4387 : 7) 익명 함수 (hxxp : // localhost : 18000/Scripts/angular.js : 4688 : 7)
아이디어가 있으십니까?
당신은 단순히 $ 값이 userService에 의해 반환 볼 수 있었다이다 .isCodeValid ($ scope.code)? – enguerranws
범위는 어떻습니까? 지시문의 $ broadcast는 어떻습니까? –
내 대답을 편집했습니다. $ timeout (deferred.resolve() ... $ timeout (deferred.resolve, 5000))으로 변경하십시오. – sma