如何使用json对象显示angularjs ng-repeat

时间:2015-11-05 13:51:50

标签: javascript php json angularjs

我正在尝试使用AngularJS搜索产品结果。我已经获得了一个带有结果的JSON对象“:下面的例子

[{"store_id":"17","user_id":"29","company_name":"Liquor R Us","company_type":"Alcohol",
"phone":"(303) 555-5555","website":"http:\/\/liqourrus.com","address":"5501 Peoria St",
"address_2":"","city":"Denver","state":"CO","zip":"80239","lat":"39.796181",
"lng":"-104.84863","mon_open":"","mon_close":"","tues_open":"","tues_close":"",
"wed_open":"","wed_close":"","thurs_open":"","thurs_close":"","fri_open":"","fri_close":"",
"sat_open":"","sat_close":"","sun_open":"","sun_close":"","distance":"1.1668156112981596",
"s":"s","st":"Every Store"}]

我正在使用ng-repeat="store in storeResult",直到我点击我的过滤功能才会显示结果,请注意过滤器未应用!

<div class="product" ng-repeat="store in storeResult">
    {{store.company_name}}
</div>

ng-click="setFilter('all');"

$scope.setFilter = function(filter) {
    if(filter == 'all') {
        $scope.searchProduct.product_type = '';
        $scope.searchStore.company_type = '';
    }
}

如果我点击“setFilter”按钮,则显示所有结果。我试图弄清楚如何让它显示而不必点击按钮。

此工作仅适用于Chrome。 Firefox和IE,永远不会显示结果。

Plunker:link

2 个答案:

答案 0 :(得分:0)

我最好的客人是点击setFilter按钮,您将触发摘要周期,因此您的ngRepeat将被执行。我怀疑您在摘要周期之外分配了storeResult,原因是最初没有显示。我无法确定,因为您的描述中没有如何将JSON分配给您的storeAssignment。

您可以查看该变量是如何分配的?

你可以改变它的方式并执行此操作:

$timeout(function() {
    $scope.storeAssignment = _your_json_value;
}); 

您必须包含$timeout依赖项,但是对此,storeAssignment中的更改将在您的摘要周期内,而ngRepeat将看到更改。

希望有所帮助。

答案 1 :(得分:0)

在您单击过滤器功能之前,您似乎没有将过滤器设置为“全部”。确保filter以“全部”开头。