我正在尝试使用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"开头。