如何用json对象显示angularjs ng repeat


How to display angularjs ng-repeat with json object

我正在尝试使用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:链接

我最棒的客人是,通过单击setFilter按钮,您将触发一个摘要周期,因此您的ngRepeat将被执行。我怀疑您在摘要周期之外分配storeResult,这就是最初没有显示的原因。我不能确定,因为你的描述中没有JSON是如何分配给你的storeAssignment的。

你能检查一下这个变量是如何分配的吗?

你能改变它的方式并这样做吗:

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

您必须包括$timeout依赖项,但这样一来,storeAssignment中的更改将在您的摘要周期内,ngRepeat将看到该更改。

希望能有所帮助。

在单击筛选器函数之前,似乎没有将筛选器设置为'all'。确保filter以"all"开头。