在标记中设置angular度范围variables
简单的问题:我怎样才能在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/
在循环内分配variables时, ng-init
不起作用。 使用{{myVariable=whatever;""}}
结尾的""
停止对任何文本进行评估的Angularexpression式。
然后你可以直接调用{{myVariable}}
来输出你的variables值。
当迭代多个嵌套数组时,我发现这非常有用,我想将当前的迭代信息保存在一个variables中而不是多次查询。
ngInit
可以帮助初始化variables。
<div ng-app='app'> <div ng-controller="MyController" ng-init="myVar='test'"> {{myVar}} </div> </div>
jsfiddle的例子
创build一个名为myVar
的指令
scope : { myVar: '@' }
并像这样调用它:
<div name="my_map" my-var="Richmond,VA">
特别注意指令中的骆驼大小写引用对连字符标签名称。
有关更多信息,请参阅“理解转换和范围”: http : //docs.angularjs.org/guide/directive
这是一个小提琴 ,它展示了如何在指令中以各种不同的方式将值从属性复制到范围variables。
你可以像这样从html中设置值。 我不认为有angular度的直接解决scheme。
<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>
然后在其他部分使用本地作用域variables:
<div>Total: BW: {{BWCount}}</div> <div>Total: COLOR: {{ColorCount}}</div>
我喜欢这个答案,但是我认为最好是创build一个全局作用域函数,它允许你设置需要的作用域variables。
所以在globalController中创build
$scope.setScopeVariable = function(variable, value){ $scope[variable] = value; }
然后在你的html文件中调用它
{{setScopeVariable('myVar', 'whatever')}}
这将允许您在各自的控制器中使用$ scope.myVar
$scope.$watch('myVar', function (newValue, oldValue) { if (typeof (newValue) !== 'undefined') { $scope.someothervar= newValue; //or get some data getData(); } }, true);
variables初始化后控制器,所以你需要监视它,当它没有初始化使用它。