예제 - angularjs pdf 한글



angularjs에서 HTML로부터 팩토리 메소드를 호출하는 방법? (2)

글쎄, 당신은 정말로 그렇게하지 않아도됩니다 ...하지만 당신이 할 수있는 일은 당신의 서비스 객체를 $ scope의 속성에 넣고 거기에서 호출하는 것입니다.

app.controller('MyCtrl', function($scope, switcher) {
   $scope.switcher = switcher;
});

controller 나는 방법을 따라왔다 :

var isPaused  = false; 

$scope.switcher = function (booleanExpr, trueValue, falseValue) {
    return booleanExpr ? trueValue : falseValue;
};

$scope.isPaused = function () {
    return isPaused;
};

그리고 저는 HTML에서 다음과 같이 부를 수 있습니다 :

<body  ng-controller="Cntrl">

...
<h4>
 {{ switcher( isPaused(), 'Search Address Mode', 'Search Location Mode' )}}
</h4>
 <div class="btn-group">
    ...     
 </div>

isPaused()false 반환하면 <h4>Search Location Mode</h4>

이것은 유틸리티이므로 factory 으로 정의하고 싶습니다.

feederliteModule.factory('switcher', function () {   
return {
    sw: function (booleanExpr, trueValue, falseValue) {
        return booleanExpr ? trueValue : falseValue;  
    }
  };
});

예외는 없지만

내가 그것을 부르려고 할 때 :

<h4>
 {{ switcher.sw( isPaused(), 'Search Address Mode', 'Search Location Mode' )}}
</h4>
 <div class="btn-group">
    ...     
 </div>

아무 반응이 없습니다.

** 컨트롤러에 'switcher' 를 추가했습니다.

어떻게 HTML에서 팩토리 메서드를 호출 할 수 있습니까?

(* 명확하지 않은 경우 내 질문을 변경 / 편집 할 수 있습니다.)

고맙습니다,


좀 더 일반적인 질문 인 "페이지로드시 angularjs 범위 / 팩토리 / 서비스를 html에서 호출하는 방법"이있었습니다. 내 해결책은 ng-show 내에서 메서드를 호출하는 것이 었습니다.

  1. 문제의 맥락을 둘러싼 가장 높은 요소에서,
  2. ng-show 지시문을 사용하여 메소드를 호출하십시오.
  3. 이 메서드는 페이지를 표시하기 전에 실행됩니다.
  4. 이와 같은 솔루션을 사용하여 페이지를 표시하기 전에 부트 스트랩 작업이 완료되었는지 확인하십시오 (이렇게하면 분산 된 렌더링에서 움직이는 부품 수를 줄일 수 있음)

<div ng-show="runThisMethod(someVarOnScope)" .....>





angularjs