Установите переменную scope angular в разметке
Простой вопрос: как установить значение области в 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>
Ответы
Ответ 1
ng-init
не работает, когда вы назначаете переменные внутри цикла. использование
{{myVariable=whatever;""}}
Конечная ""
останавливает выражение Angular, которое оценивается для любого текста.
Затем вы можете просто вызвать {{myVariable}}
для вывода значения переменной.
Я нашел это очень полезным при повторении нескольких вложенных массивов, и я хотел сохранить текущую итерационную информацию в одной переменной, а не запрашивать ее несколько раз.
Ответ 2
ngInit
может помочь инициализировать переменные.
<div ng-app='app'>
<div ng-controller="MyController" ng-init="myVar='test'">
{{myVar}}
</div>
</div>
пример jsfiddle
Ответ 3
Создайте директиву под названием myVar
с помощью
scope : { myVar: '@' }
и назовите его следующим образом:
<div name="my_map" my-var="Richmond,VA">
Обратите внимание, в частности, на ссылку верблюжьего случая в директиве на имя дефисного тега.
Для получения дополнительной информации см. "Общие сведения о трансклюзии и области действия" здесь: - http://docs.angularjs.org/guide/directive
Вот сценарий, в котором показано, как вы можете копировать значения из атрибутов в переменные области видимости различными способами в пределах директивы.
Ответ 4
Вы можете установить значения из html, как это.
Я не думаю, что есть прямое решение от angular.
<div style="visibility: hidden;">{{activeTitle='home'}}</div>
Ответ 5
Вы можете использовать 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>
Ответ 6
Мне нравится ответ, но я думаю, что было бы лучше создать глобальную функцию области видимости, которая позволит вам установить требуемую переменную области.
Итак, в globalController создайте
$scope.setScopeVariable = function(variable, value){
$scope[variable] = value;
}
а затем в вашем html файле вызовите его
{{setScopeVariable('myVar', 'whatever')}}
Это позволит вам использовать $scope.myVar в вашем соответствующем контроллере
Ответ 7
$scope.$watch('myVar', function (newValue, oldValue) {
if (typeof (newValue) !== 'undefined') {
$scope.someothervar= newValue;
//or get some data
getData();
}
}, true);
Переменная инициализируется после контроллера, поэтому вам нужно следить за ней и когда она инициализируется ее использованием.