Установить переменную угловой области в разметке
простой вопрос: Как я могу установить значение области в 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/
8 ответов:
ng-init
не работает, когда вы назначаете переменные внутри цикла. Использовать{{myVariable=whatever;""}}
трейлинг
""
останавливает вычисление углового выражения для любого текста.затем вы можете просто позвонить
{{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">
обратите внимание, в частности, на ссылку camel case в директиве на имя тега с переносом.
дополнительные сведения см. В разделе "передача и областей" здесь:- http://docs.angularjs.org/guide/directive
вот Скрипка это показывает, как вы можете копировать значения из атрибутов в переменные области в различных различные способы в рамках директивы.
вы можете установить значения из 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>
а затем использовать локальную переменную scope в других разделах:
<div>Total: BW: {{BWCount}}</div> <div>Total: COLOR: {{ColorCount}}</div>
мне нравится ответ, но я думаю, что было бы лучше, если бы вы создали глобальную функцию scope, которая позволит вам установить необходимую переменную scope.
Так что в globalController create
$scope.setScopeVariable = function(variable, value){ $scope[variable] = value; }
а потом в вашем html файле назовите его
{{setScopeVariable('myVar', 'whatever')}}
это позволит вам использовать $scope.myVar в вашем соответствующем контроллере