在标记中设置角度范围变量

时间:2013-05-28 15:51:15

标签: angularjs angularjs-scope

简单的问题:如何在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/

9 个答案:

答案 0 :(得分:133)

在循环中分配变量时,

ng-init不起作用。使用 {{myVariable=whatever;""}}

尾随""会阻止正在评估的Angular表达式为任何文本。

然后,您只需致电{{myVariable}}即可输出您的变量值。

我发现这在迭代多个嵌套数组时非常有用,我希望将当前的迭代信息保存在一个变量中,而不是多次查询。

答案 1 :(得分:79)

ngInit可以帮助初始化变量。

<div ng-app='app'>
    <div ng-controller="MyController" ng-init="myVar='test'">
        {{myVar}}
    </div>
</div>

<强> jsfiddle example

答案 2 :(得分:19)

使用

创建名为myVar的指令
scope : { myVar: '@' }

并将其称为:

<div name="my_map" my-var="Richmond,VA">

请特别注意带有连字符标记名称的指令中的驼峰案例引用。

有关详细信息,请参阅此处的“了解转化和范围”: - http://docs.angularjs.org/guide/directive

Here's a Fiddle显示如何在指令中以各种不同的方式将值从属性复制到范围变量。

答案 3 :(得分:10)

您可以像这样设置html中的值。 我不认为有角度的直接解决方案。

 <div style="visibility: hidden;">{{activeTitle='home'}}</div>

答案 4 :(得分:3)

您可以使用# Vote class. class vote { public $newsID; private $db; # Construct. public function __construct($_database) { $this->db = $_database; } } $_database = new Database(); $news = new News($_database); ,如下所示

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>

答案 5 :(得分:1)

$scope.$watch('myVar', function (newValue, oldValue) {
        if (typeof (newValue) !== 'undefined') {
            $scope.someothervar= newValue;
//or get some data
            getData();
        }


    }, true);

变量在控制器之后初始化,因此您需要监视它以及何时初始化使用它。

答案 6 :(得分:0)

我喜欢这个答案,但我认为你创建一个全局范围函数会更好,你可以设置所需的范围变量。

所以在globalController中创建

$scope.setScopeVariable = function(variable, value){
    $scope[variable] = value;
}

然后在你的html文件中调用它

{{setScopeVariable('myVar', 'whatever')}}

这将允许您在各自的控制器中使用$ scope.myVar

答案 7 :(得分:0)

如果你不在循环中,你可以使用ng-init,否则你可以使用

router.post('/register', passport.authenticate('local-signup', {
  successRedirect: '/dashboard', // redirect to the secure profile section
  failureRedirect: '/register', // redirect back to the signup page if there is an error
}));
&#34;&#34;&#34;&#34; alows不显示你的var

答案 8 :(得分:0)

您可以在隐藏字段中使用ng-value指令,如下所示:-

<input type="hidden" ng-value="myScopeVar = someValue"/>

这会将范围变量(myScopeVar)的值设置为“ someValue”