我有一个控制器负责与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%}打印从服务器发送的标识。但我得到错误。
在创建控制器时,将值传递给控制器的正确方法是什么?
笔记:
原文链接:https://www.f2er.com/angularjs/147832.html这个答案是老的。这只是对如何实现预期成果的概念的证明。但是,它可能不是最好的解决方案,如下面的一些意见。我没有任何文档来支持或拒绝以下方法。请参考下面的一些意见,进一步讨论这个话题。
原始答案:
我回答这个
是的,绝对可以使用ng-init和一个简单的init函数。
这里是它的例子在plunker
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) }; });