一尘不染

您可以在创建时将参数传递给AngularJS控制器吗?

angularjs

我有一个控制器,负责与API进行通信以更新用户,姓名,电子邮件等的属性。每个用户都有一个'id'在查看个人资料页面时从服务器传递的。

我想将此值传递给AngularJS控制器,以便它知道当前用户的API入口点。我尝试过将值传递给ng-controller。例如:

function UserCtrl(id, $scope, $filter) {

$scope.connection = $resource('api.com/user/' + id)

并在HTML中

<body ng-controller="UserCtrl({% id %})">

在此{% id %}打印从服务器发送的ID。但我得到了错误。

在创建值时将值传递到控制器的正确方法是什么?


阅读 190

收藏
2020-07-04

共1个答案

一尘不染

笔记:

这个答案很旧。这仅仅是关于如何实现所需结果的概念证明。但是,根据下面的一些评论,它可能不是最佳解决方案。我没有任何文档可以支持或拒绝以下方法。请参考下面的一些评论,以进一步讨论该主题。

原始答案:

我对是的回答是,您绝对可以使用ng-init和简单的init函数来做到这一点。

这是在punker上的例子

的HTML

<!DOCTYPE html>
<html ng-app="angularjs-starter">
  <head lang="en">
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.min.js"></script>
    <script src="app.js"></script>
  </head>  
  <body ng-controller="MainCtrl" ng-init="init('James Bond','007')">
    <h1>I am  {{name}} {{id}}</h1>
  </body>
</html>

的JavaScript

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

app.controller('MainCtrl', function($scope) {

  $scope.init = function(name, id)
  {
    //This function is sort of private constructor for controller
    $scope.id = id;
    $scope.name = name; 
    //Based on passed argument you can make a call to resource
    //and initialize more objects
    //$resource.getMeBond(007)
  };


});
2020-07-04