从模板/视图获取变量到控制器?

时间:2014-11-12 11:13:12

标签: javascript angularjs

也许我的大脑今天早上还没有完全正常运行,但是从Angular中将模板/视图中的变量变为控制器的最佳或正确方法是什么?

在我看来,我已经定义了var a = 'something',我需要在控制器中访问该值。

我可以在passVariable(a)上执行ng-init,在控制器内部可以使用

$scope.passVariable = function(param){
  $scope.a = param; 
}

但显然这不起作用,并且该方法似乎也不正确; - )

2 个答案:

答案 0 :(得分:0)

你可以这样做。

将角度模块分配给变量

 var myApp = angular.module('myApp', []);
 myApp.value('a', 'something');

然后注入控制器

myApp.controller('myController', ['a','$scope', function (a,scope) {
  $scope.a = a;

}]);

因此,在您看来,例如说'a'是您要向用户显示的用户名

 <div ng-controller="myController">

     <div> User Name: {{a}} </div>

 </div>

这将呈现为

  User Name : something

答案 1 :(得分:0)

好的,事实证明我的第一个想法毕竟不是太糟糕。我完成了我在我的问题中描述的内容,除了变量a需要在角度上下文中定义,或者直接传递给函数。出于某种原因,var a = 'something'(在视图中)没有被提起。

所以以下不起作用:

<script>
  var a = something;
</script>
<div ng-controller="myController" ng-init="passVariable(a)">
</div>

但是ng-init="passVariable('something')",确实如此。

在控制器中:

$scope.passVariable = function(param){
  $scope.a = param; 
}

这是使用$ window的另一个可能的答案:Pass JavaScript variable into AngualrJs ng-init

使用以下示例:http://codepen.io/qwertynl/pen/jqIrK

相关问题