Простой вопрос: как установить значение области видимости в 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/
my-var="foo"
когда ее вызываете. Обратите внимание на использование дефиса и верблюжьего регистра. Примечание:foo
здесь оценивается , если вы не хотите, чтобы использование '@' в определении области видимости обращалось к значению атрибута.Ответы:
ng-init
не работает, когда вы назначаете переменные внутри цикла. Использовать{{myVariable=whatever;""}}
Завершение
""
останавливает вычисление выражения Angular для любого текста.Затем вы можете просто позвонить,
{{myVariable}}
чтобы вывести значение переменной.Я нашел это очень полезным при итерации нескольких вложенных массивов, и я хотел сохранить мою текущую информацию об итерации в одной переменной, а не запрашивать ее несколько раз.
источник
{{}}
только для вывода одной переменной, а не для назначения переменных. Я бы сказал, что stackoverflow.com/a/16799763/814160 более правильный (меньше кода JS в представлении).ngInit
может помочь инициализировать переменные.jsfiddle пример
источник
Создайте директиву
myVar
с именеми назовите это так:
Обратите внимание, в частности, на ссылку в директиве на имя тега, написанное через дефис.
Для получения дополнительной информации см. «Общие сведения о включении и областях» здесь: - http://docs.angularjs.org/guide/directive
Вот сценарий, который показывает, как можно копировать значения из атрибутов в переменные области видимости различными способами в пределах директивы.
источник
var-nick='my' var-nick2='test'
. Если вы не можете придумать способ реализовать это с помощью директив, я просто собираюсь использоватьng-init
scope: {varNick: '@', varNick2: '@'}
Вы можете установить значения из html вот так. Не думаю, что у angular пока есть прямое решение.
источник
<div style="display: none">
однако рекомендую .Вы можете использовать,
ng-init
как показано нижеа затем используйте переменную локальной области видимости в других разделах:
источник
Переменная инициализируется после контроллера, поэтому вам нужно следить за ней и использовать ее, когда она не инициализирована.
источник
Мне нравится ответ, но я думаю, было бы лучше, если бы вы создали функцию глобальной области видимости, которая позволит вам установить необходимую переменную области.
Итак, в globalController создайте
а затем в вашем html файле назовите его
Это позволит вам использовать $ scope.myVar в соответствующем контроллере.
источник
Если вы не в цикле, вы можете использовать ng-init, иначе вы можете использовать
"" позволяет не отображать ваш var
источник