간단한 질문 : 컨트롤러에서 읽을 수 있도록 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>
답변
라는 지시문을 만들기 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를 사용할 수 있습니다.