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

Nix*_*Nix 92 angularjs angularjs-scope

简单问题:如何在html中设置范围值,由我的控制器读取?

var app = angular.module('app', []);

app.controller('MyController', function($scope) {
  console.log($scope.myVar);
});
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

JSFiddle:http: //jsfiddle.net/ncapito/YdQcX/

Glo*_*ogo 136

ng-init在循环中分配变量时不起作用.使用 {{myVariable=whatever;""}}

尾随""停止将Angular表达式计算为任何文本.

然后您可以简单地调用{{myVariable}}输出您的变量值.

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

  • 虽然这有效,但看起来很hacky。也就是说,通常最好只使用“{{}}”来输出单个变量,而不是分配变量。我想说http://stackoverflow.com/a/16799763/814160更正确(视图中的JS代码更少)。 (2认同)
  • 这似乎在 angular2/4 中不起作用 - 绑定不能包含赋值 (2认同)

Mar*_*man 79

ngInit 可以帮助初始化变量.

<div ng-app='app'>
    <div ng-controller="MyController" ng-init="myVar='test'">
        {{myVar}}
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

jsfiddle的例子

  • 应该注意的是,他们不推荐这种解决方案用于真实的应用程序(但实际上并没有建议替代方案):http://docs.angularjs.org/guide/dev_guide.mvc.understanding_model (3认同)

Ian*_*cer 19

创建一个名为myVarwith 的指令

scope : { myVar: '@' }
Run Code Online (Sandbox Code Playgroud)

并称之为:

<div name="my_map" my-var="Richmond,VA">
Run Code Online (Sandbox Code Playgroud)

请特别注意带有连字符标记名称的指令中的camel case引用.

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

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


ibs*_*env 10

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

 <div style="visibility: hidden;">{{activeTitle='home'}}</div>
Run Code Online (Sandbox Code Playgroud)

  • 不错的黑客......会推荐`<div style ="display:none">`. (7认同)