2017-02-24 2 views
0

Angularjs에서 맞춤 메시지를 저장하고 액세스하는 가장 좋은 방법은 무엇입니까? 예 :angularjs 맞춤 메시지 및 로깅

$scope.alert.msg = "Delete successful !!"; 

$scope.alert.msg = "Error deleting record."; 

대신 사용자 정의 메시지를 하드 코딩, 나는 하나의 파일에 저장하고 싶은 KEY value.Any 추천에 의한 메시지와 액세스 그것은 모든 종류의?

또한 모든 로그가 한 곳에서 발생하도록 Angularjs에 대한 로거를 설정하려면 어떻게해야합니까? 이것은 내가 한 일입니다. 대신 $log.debug('Data saved!')

나는 그때 컨트롤러에 logService을 주입하고 아래

logService.logError(error.error_description);

같은 메시지를 기록

logData.logInfo = function(logMessage) { 
    // information log me 
    if (config.logLevel == 10) { 
     $log.debug(logMessage); 
     //TODO save logMessage to database 
    } 
} 
logData.logError = function(logMessage) { 
    if (config.emailError) { 
     // log and email the error 
     $log.debug(logMessage); 
     //TODO Email 
     //TODO save logMessage to database 
    } else { 
     // log only 
     //TODO save logMessage to database 
     $log.debug(logMessage); 
    } 
} 

아래와 같은 방법으로 logService 같은 서비스를 생성 더 나은 기록 방법이있을 수 있다고 확신합니다. 어떤 도움이라도 대단히 감사하니?

답변

0

공장을 사용하여 경고를 중앙 ​​집중화 할 수 있습니다.

.factory('Alerts', function() { 
    return { 
     "success": { 
      "delete": "Delete succesful" 
     }, 
     "error": { 
      "delete": "Delete unsuccesful" 
     } 
    }; 
}) 

구성 요소 Alerts.success.delete과 같이 알림을 사용할 수 있습니다.

메시지 로깅의 경우 응용 프로그램의 구성에있는 변수를 기반으로 $log.debug을 켜거나 끌 수 있습니다.

.config(function($logProvider){ 
    $logProvider.debugEnabled(false); 
}) 

로깅 수준이있는 전역 변수를 추가하고 해당 수준을 기반으로 이메일을 보내거나 데이터베이스에 쓸지 여부를 결정할 수 있습니다. 나는 로거를 구현하는 방법을 보여주기 위해 JSFiddle을 추가했다. 콘솔을 열어 결과를 보는 것을 잊지 마십시오.

방금 ​​jsfiddle의 내용을 붙여 넣습니다.

angular.module('myApp', []) 
    .constant('LOG_LEVEL', 1) 
    .config(function($logProvider){ 
     $logProvider.debugEnabled(true); 
    }) 
    .factory('Alerts', function() { 
     return { 
      "success": { 
       "delete": "Delete succesful" 
      }, 
      "error": { 
       "delete": "Delete unsuccesful" 
      } 
     }; 
    }) 
    .factory('LogService', function($log, LOG_LEVEL) { 
      function writeToDB() { 
      //Write to db 
     }; 
     function email() { 
      //Email someone 
     } 
     return { 
      error: function(msg) { 
       $log.error(msg); 
       if (LOG_LEVEL > 0) writeToDB(msg); 
       if (LOG_LEVEL > 1) email(msg); 
      }, 
      success: function(msg) { 
       $log.log(msg); 
      }, 
      debug: function (msg) { 
        $log.debug(msg); 
      } 
     } 
    }) 
    .run(function(LogService, Alerts) { 
     LogService.error(Alerts.error.delete); 
     LogService.success(Alerts.success.delete); 
     LogService.debug("Turn me on and off in the config!") 
    }) 
+0

이 멋지다. .factory ('Alerts'.... 데이터를 Alert.success.saved 및 Alert.error.saved로 가져 오려면 어떻게해야합니까? – bp581

+0

반환 { "성공",} "오류" 을 "성공적인 삭제": { 은 "삭제",} "성공"을 을 "개 실패 삭제": { 은 "삭제"{ 을 "저장" "메시지 저장 완료" }, "오류": { "저장 됨": "데이터 저장 오류" } }; – bp581

+0

이 올바른 방법입니까? 죄송합니다, 새로운 각도기입니다 – bp581

0

한 곳에서 메시지를 처리하려면 ngLocalize을 사용합니다. 자세한 내용은 link입니다. 한마디로

,

당신은 당신의 응용 프로그램 디렉토리에 /res/en-US/messages.lang.json 파일을 생성 (또는 원하는 다른 현지화를 사용). 이 파일은 다음과 같은 형식이 있어야합니다

{ 
    "msgError":"Error occurred", 
    "msgUserLoggedIn":"Successfully logged in" 
} 

다음, 당신이 그것을 사용하고자하는 모듈의 ngLocalize 있습니다.

<div> 
    {{ 'messages.msgUserLoggedIn' | i18n }} 
</div> 

또는 컨트롤러 코드 : 그 후, 당신은 HTML에서 사용할 수 있습니다

var errorMessage = $filter('i18n')('messages.msgError');