我对AngularJS很新。这是我第一次涉足任何类型的JS,所以如果我宰了一切,我会道歉。
以下是我正在尝试做的简要概述。
用户输入一个搜索词,我从Twitter获取信息。推文显示为ng-repeat(使我的问题更令人沮丧)。用户检查他/她想要添加到“购物车”的推文。 Ipush被选中到我的服务阵列上的推文(购物车服务中的“shoppingCart”)。
然后我点击“添加到购物车”转移到新页面(results.html),我想显示用户选择的内容。
注意:出于我们的目的,我已经跳过了这个并硬编码结果。
这就是全部崩溃的地方。我可以控制打印数组,以确保下一个控制器接收到服务,但我无法让ng-repeat工作。
我完全不知道我在这里搞砸了什么。我对Angular还很新,所以我很可能犯了一个愚蠢的错误。我试过阅读文档并检查了egghead.io视频。不幸的是,我不能把两个和两个放在一起。
以下是硬编码数组的服务:
myApp.service('cart', function Cart($rootScope) {
var self = this;
var shoppingCart = [{
"created_at": "Wed, 17 Apr 2013 17:52:42 +0000",
"from_user": "LopezCarlosB",
"from_user_id": 244705286,
"from_user_id_str": "244705286",
"from_user_name": "carlos lopez",
"geo": null,
"id": 324581196224938000,
"id_str": "324581196224937984",
"iso_language_code": "en",
"metadata": {
"result_type": "recent"
},
"source": "",
"text": "@Medicencaballo @ponnyloca AHHH AHH LESLEEEEEY ASD SIGYGIS",
"to_user": "Medicencaballo",
"to_user_id": 202598647,
"to_user_id_str": "202598647",
"to_user_name": "Axel Manrique",
"in_reply_to_status_id": 324580938027765760,
"in_reply_to_status_id_str": "324580938027765760"
}, {
"created_at": "Wed, 17 Apr 2013 17:52:35 +0000",
"from_user": "WhatNowTweeting",
"from_user_id": 383266399,
"from_user_id_str": "383266399",
"from_user_name": "Herman",
"geo": null,
"id": 324581166764130300,
"id_str": "324581166764130305",
"iso_language_code": "en",
"metadata": {
"result_type": "recent"
},
"source": "",
"text": "Life on the spectrum: 5 books about autism and Asperger's - Mother Nature Network #autism #asperger #pddnos #pdd #asd"
}, {
"created_at": "Wed, 17 Apr 2013 17:52:32 +0000",
"from_user": "Elchinitooooo",
"from_user_id": 903231720,
"from_user_id_str": "903231720",
"from_user_name": "ChinoCochino..^^",
"geo": null,
"id": 324581154667782140,
"id_str": "324581154667782147",
"iso_language_code": "es",
"metadata": {
"result_type": "recent"
},
"source": "",
"text": "Mañana viene mi amor :3 asd asd"
}];
self.add = function (item) {
shoppingCart.push(item);
}
self.count = function () {
console.log(shoppingCart);
return shoppingCart.length;
}
self.log = function () {
return shoppingCart;
}
});
以下是以下视图的控制器:
myApp.controller('ResultsCtrl',
function ResultsCtrl($scope, $resource, cart) {
$scope.cart = cart;
$scope.shoppingCart = cart.shoppingCart;
});
以下是该视图的html:
<div>
<table>{{cart.log()}}
<br>
<ul>
<li ng-repeat="item in shoppingCart">{{item.text}}</li>
</ul>
</table>
</div>
我没有在Firebug中收到任何错误,所以我想象我没有正确引用数组,但却无法弄清楚如何。
非常感谢您提供的任何帮助。
答案 0 :(得分:1)
您似乎正在尝试使用行
直接从控制器访问shoppingCart var$scope.shoppingCart = cart.shoppingCart;
但是,shoppingCart没有附加到self / this,实际上是私有的,所以我认为这种访问类型是不可能的。您的服务中的log方法返回shoppingCart var,因此如果您将上面的行更改为以下内容,它可能会有所帮助:
$scope.shoppingCart = cart.log();
我不确定这是否可以使用.service
方法,因此如果失败,您可能需要考虑使用.factory
,这与{{1}基本相同但是允许您返回将成为服务的对象而不是.service
。