100

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

4

9 回答 9

140

ng-init在循环内分配变量时不起作用。利用 {{myVariable=whatever;""}}

尾随""停止 Angular 表达式被评估为任何文本。

然后你可以简单地调用{{myVariable}}来输出你的变量值。

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

于 2015-02-10T13:07:11.147 回答
83

ngInit可以帮助初始化变量。

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

jsfiddle 示例

于 2013-05-28T16:15:18.427 回答
19

myVar创建一个名为

scope : { myVar: '@' }

并这样称呼它:

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

请特别注意指令中对连字符标记名称的驼峰式引用。

有关更多信息,请参阅此处的“理解嵌入和作用域”:- http://docs.angularjs.org/guide/directive

这是一个 Fiddle,它展示了如何在指令中以各种不同的方式将值从属性复制到范围变量。

于 2013-05-28T19:20:14.647 回答
10

您可以像这样从 html 设置值。我认为 Angular 还没有直接的解决方案。

 <div style="visibility: hidden;">{{activeTitle='home'}}</div>
于 2015-01-02T10:01:44.803 回答
3

可以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>
于 2015-10-12T16:09:33.900 回答
1
$scope.$watch('myVar', function (newValue, oldValue) {
        if (typeof (newValue) !== 'undefined') {
            $scope.someothervar= newValue;
//or get some data
            getData();
        }


    }, true);

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

于 2017-11-16T16:58:03.230 回答
0

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

所以在 globalController 创建

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

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

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

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

于 2017-09-07T07:38:15.837 回答
0

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

{{var=foo;""}}

"" 允许不显示您的 var

于 2018-01-16T16:40:02.123 回答
0

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

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

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

于 2020-12-09T22:49:01.187 回答