[angularjs] 마크 업에서 각도 범위 변수 설정

간단한 질문 : 컨트롤러에서 읽을 수 있도록 html로 범위 값을 어떻게 설정할 수 있습니까?

var app = angular.module('app', []);

app.controller('MyController', function($scope) {
  console.log($scope.myVar);
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app='app'>
  <div ng-controller="MyController" app-myVar="test">
    {{myVar}}
  </div>
</div>

JSFiddle : http://jsfiddle.net/ncapito/YdQcX/



답변

ng-init루프 내부에 변수를 할당 할 때 작동하지 않습니다. 사용하다
{{myVariable=whatever;""}}

후행 ""은 텍스트에 대해 평가되는 Angular 표현식을 중지합니다.

그런 다음 간단히 호출 {{myVariable}}하여 변수 값을 출력 할 수 있습니다 .

여러 중첩 배열을 반복 할 때이 방법이 매우 유용하다는 것을 알았고 여러 번 쿼리하는 대신 현재 반복 정보를 하나의 변수에 유지하고 싶었습니다.


답변

ngInit 변수를 초기화하는 데 도움이 될 수 있습니다.

<div ng-app='app'>
    <div ng-controller="MyController" ng-init="myVar='test'">
        {{myVar}}
    </div>
</div>

jsfiddle 예


답변

라는 지시문을 만들기 myVar로를

scope : { myVar: '@' }

다음과 같이 부릅니다.

<div name="my_map" my-var="Richmond,VA">

특히 하이픈으로 연결된 태그 이름에 대한 지시문의 낙타 대소 문자 참조에 유의하십시오.

더 많은 정보를 볼 수 여기에 “이해 트랜스 클루 전 및 스코프”의 경우 : – http://docs.angularjs.org/guide/directive

다음 은 지시문 내에서 다양한 방법으로 속성의 값을 범위 변수로 복사하는 방법을 보여주는 Fiddle 입니다.


답변

이와 같이 html에서 값을 설정할 수 있습니다. 앵귤러의 직접적인 해결책은 아직 없다고 생각합니다.

 <div style="visibility: hidden;">{{activeTitle='home'}}</div>


답변

ng-init아래와 같이 사용할 수 있습니다.

<div class="TotalForm">
  <label>B/W Print Total</label>
  <div ng-init="{{BWCount=(oMachineAccounts|sumByKey:'BWCOUNT')}}">{{BWCount}}</div>
</div>
<div class="TotalForm">
  <label>Color Print Total</label>
  <div ng-init="{{ColorCount=(oMachineAccounts|sumByKey:'COLORCOUNT')}}">{{ColorCount}}</div>
</div>

그런 다음 다른 섹션에서 로컬 범위 변수를 사용하십시오.

<div>Total: BW: {{BWCount}}</div>
<div>Total: COLOR: {{ColorCount}}</div>


답변

$scope.$watch('myVar', function (newValue, oldValue) {
        if (typeof (newValue) !== 'undefined') {
            $scope.someothervar= newValue;
//or get some data
            getData();
        }


    }, true);

변수는 컨트롤러 이후에 초기화되므로 감시해야하고 초기화되지 않았을 때 사용합니다.


답변

나는 대답을 좋아하지만 필요한 범위 변수를 설정할 수있는 전역 범위 함수를 만드는 것이 더 낫다고 생각합니다.

그래서 globalController에서

$scope.setScopeVariable = function(variable, value){
    $scope[variable] = value;
}

그런 다음 html 파일에서

{{setScopeVariable('myVar', 'whatever')}}

그러면 각 컨트롤러에서 $ scope.myVar를 사용할 수 있습니다.