我正在尝试使用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
答案 0 :(得分:0)
我最好的客人是点击setFilter
按钮,您将触发摘要周期,因此您的ngRepeat
将被执行。我怀疑您在摘要周期之外分配了storeResult
,原因是最初没有显示。我无法确定,因为您的描述中没有如何将JSON分配给您的storeAssignment。
您可以查看该变量是如何分配的?
你可以改变它的方式并执行此操作:
$timeout(function() {
$scope.storeAssignment = _your_json_value;
});
您必须包含$timeout
依赖项,但是对此,storeAssignment中的更改将在您的摘要周期内,而ngRepeat将看到更改。
希望有所帮助。
答案 1 :(得分:0)
在您单击过滤器功能之前,您似乎没有将过滤器设置为“全部”。确保filter
以“全部”开头。