我有一个控制器负责与API通信以更新用户的属性,名称,电子邮件等.每个用户都有一个'id'
在查看个人资料页面时从服务器传递的用户.
我想将此值传递给AngularJS控制器,以便它知道当前用户的API入口点是什么.我试过传递价值ng-controller
.例如:
function UserCtrl(id, $scope, $filter) {
$scope.connection = $resource('api.com/user/' + id)
Run Code Online (Sandbox Code Playgroud)
并在HTML中
<body ng-controller="UserCtrl({% id %})">
Run Code Online (Sandbox Code Playgroud)
其中{% id %}
打印从服务器发送的id.但我得到错误.
在创建时将值传递给控制器的正确方法是什么?
我有一个显示我的产品的基本控制器,
App.controller('ProductCtrl',function($scope,$productFactory){
$productFactory.get().success(function(data){
$scope.products = data;
});
});
Run Code Online (Sandbox Code Playgroud)
在我看来,我在列表中显示这些产品
<ul>
<li ng-repeat="product as products">
{{product.name}}
</li>
</ul
Run Code Online (Sandbox Code Playgroud)
我想要做的是当有人点击产品名称时,我有另一个名为cart的视图,其中添加了此产品.
<ul class="cart">
<li>
//click one added here
</li>
<li>
//click two added here
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
所以我的疑问是,如何将这个点击的产品从第一个控制器传递到第二个?我认为购物车也应该是一个控制器.
我使用指令处理click事件.另外我觉得我应该使用服务来实现上述功能只是无法想象如何?因为购物车将是预定义的,所添加的产品数量可能是5/10,具体取决于用户所在的页面.所以我想保持这种通用性.
更新:
我创建了一个广播服务,在第二个控制器中我收到它.现在查询是如何更新dom的?由于我的产品列表是非常硬编码的.
我是Angular的新手但很享受它的方法.我有一个HTML文件,我ng-init
在一个<div>
元素中初始化一个变量,我也在声明一个带有该ng-controller
指令的控制器:
<div ng-controller="myCtrl" ng-init='foo="bar"'>
Run Code Online (Sandbox Code Playgroud)
如果我console.log
是$scope
控制器脚本中的对象,我可以看到其他foo
属性列出的属性,但是当我尝试从同一个脚本访问它时,它给了我undefined
.我也在使用Batarang,它向我展示了<div>
-scope 的模型,其中还包括该foo
属性.
我从第二个答案中知道将变量传递给AngularJS控制器,最佳实践?我可以通过将我的ng-init
指令移到外部来解决问题<div>
,但我想知道幕后真正发生的事情.任何帮助非常感谢,提前感谢.
div
元素中指令的顺序无关紧要.即使ng-init
之前已指定,问题仍然存在ng-controller