【问题标题】:Get variable from template/view into controller?从模板/视图获取变量到控制器?
【发布时间】:2014-11-12 11:13:11
【问题描述】:

也许今天早上我的大脑还没有完全发挥作用,但是在 Angular 中将变量从模板/视图中获取到控制器的最佳或正确方法是什么?

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

我可以在ng-init 上执行passVariable(a),并且在控制器内部有类似的东西

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

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

【问题讨论】:

  • var a 是在哪里定义的?您可以使用 angularjs 的 .value([..]) 服务而不是 var a .. 并注入控制器。
  • 在视图中定义。必须如此,因为变量可以从视图更改为视图。在视图内调用.value(...) 不起作用,我该怎么办?

标签: javascript angularjs


【解决方案1】:

你可以做这样的事情。

将角度模块分配给变量后

 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

【讨论】:

  • 当我在控制器内部执行myApp.value('a', 'something'); 时它可以工作,但我如何在视图中执行它?
  • 感谢您的编辑,但就像问题中所述,变量必须在视图内定义,因为它会随着视图的变化而变化。 (例如var a = 'something')。显示变量的值不是问题。
【解决方案2】:

好吧,事实证明我的第一个想法毕竟还不错。我已经完成了我在问题中描述的内容,除了变量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

【讨论】:

    猜你喜欢
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 2017-05-14
    • 2019-02-13
    • 2020-11-06
    • 1970-01-01
    相关资源
    最近更新 更多