0

我对 AngularJS 很陌生。这是我第一次尝试任何类型的 JS,所以如果我屠杀了任何东西,我深表歉意。

这是我正在尝试做的事情的简要概述。

用户输入要搜索的术语,我从 Twitter 获取信息。推文以 ng-repeat 显示(让我的问题更令人沮丧)。用户检查他/她想要添加到“购物车”的推文。选择到我的服务数组(购物车服务中的“shoppingCart”)的 Ipush 推文。

然后我单击“添加到购物车”以转移到一个新页面 (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 中没有收到任何错误,所以我想我没有正确引用数组,但一直无法弄清楚如何。

非常感谢您提供的任何帮助。

4

1 回答 1

1

看起来您正在尝试使用以下行直接从控制器访问 shoppingCart var

$scope.shoppingCart = cart.shoppingCart;

但是,shoppingCart 没有附加到 self/this,从而有效地将其设为私有,因此我认为这种访问方式是不可能的。您的服务中的 log 方法返回 shoppingCart 变量,所以如果您将上面的行更改为:

$scope.shoppingCart = cart.log();

我不确定这是否可以使用该.service方法,因此如果它失败了,您可能需要考虑使用 using .factory,它的作用基本相同,.service但允许您返回一个将成为服务的对象,而不是this.

于 2013-04-17T19:54:49.480 回答