我有一个控制器,负责与API进行通信以更新用户,姓名,电子邮件等的属性。每个用户都有一个'id'在查看个人资料页面时从服务器传递的。
'id'
我想将此值传递给AngularJS控制器,以便它知道当前用户的API入口点。我尝试过将值传递给ng-controller。例如:
ng-controller
function UserCtrl(id, $scope, $filter) { $scope.connection = $resource('api.com/user/' + id)
并在HTML中
<body ng-controller="UserCtrl({% id %})">
在此{% id %}打印从服务器发送的ID。但我得到了错误。
{% id %}
在创建值时将值传递到控制器的正确方法是什么?
笔记:
这个答案很旧。这仅仅是关于如何实现所需结果的概念证明。但是,根据下面的一些评论,它可能不是最佳解决方案。我没有任何文档可以支持或拒绝以下方法。请参考下面的一些评论,以进一步讨论该主题。
原始答案:
我对是的回答是,您绝对可以使用ng-init和简单的init函数来做到这一点。
ng-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) }; });