离子类型与离子过滤器-棒 - 不能参考$scope
Ionic typeahead with ionic-filter-bar - cannot reference $scope
我正在尝试实现离子过滤器栏,以便在我的离子移动应用程序上提前工作,并且在尝试确定控制器中的$scope时遇到问题。我一直在复制此处找到的演示应用程序中的大部分代码:
https://github.com/djett41/ionic-filter-bar/blob/master/demo/app/scripts/app.js
我可以确定 $scope.hops 以便在页面上正确呈现的 ng-repeat 中正确显示所有对象(无需搜索),但我无法在 showFilterBar 函数中引用 $scope.hops。输出到控制台时收到未定义.log(请参阅代码中的注释)。我认为这与在其他函数中访问$scope的方式有关(??),但被卡住了。
谁能帮我一把?提前谢谢。
控制器
//Added $ionicFilterBar & $timeout - Remove if does not work
.controller("hopsListCtrl", function($scope, hopsService, $stateParams, $state, $ionicFilterBar, $timeout) {
hopsService.getHops().then(function(hops) {
//This correctly returns my object of hop varieties
$scope.hops = hops;
})
$scope.onSelectHopsDetail = function(hops_detail) {
$state.go('tab.hopsDetail', hops_detail);
hopsService.postHopDetails(hops_detail);
};
var filterBarInstance;
//This returns "undefined" -
console.log($scope.hops);
$scope.showFilterBar = function() {
filterBarInstance = $ionicFilterBar.show({
hops: $scope.hops,
update: function(filteredItems) {
$scope.hops = filteredItems;
//This returns "undefined"
console.log(filteredItems);
},
filterProperties: 'Name'
});
};
$scope.refreshItems = function() {
if (filterBarInstance) {
filterBarInstance();
filterBarInstance = null;
}
$timeout(function() {
getItems();
$scope.$broadcast('scroll.refreshComplete');
}, 1000);
};
})
啤酒花列表页面
<ion-view title="Hops Guide">
<ion-nav-buttons side="secondary">
<button class="button-icon icon ion-ios-search" ng-click="showFilterBar()">
</button>
</ion-nav-buttons>
<ion-content direction="y" scrollbar-y="false">
<ion-refresher pulling-icon="ion-arrow-down-b" on-refresh="refreshItems()">
</ion-refresher>
<ion-list>
<ion-item collection-repeat="hop in hops">
<a class="" ng-click="onSelectHopsDetail(hop)">
<p>{{hop.Name}}</p>
</ion-item>
</ion-list>
<div ng-if="hops !== undefined && !hops.length" class="no-results">
<p>No Results</p>
</div>
</ion-content>
</ion-view>
您需要使用 items 属性,而不是跳转到筛选器栏服务。 所以你对showFilterBare的调用应该是
filterBarInstance = $ionicFilterBar.show({
items: $scope.hops,
update: function(filteredItems) {
$scope.hops = filteredItems;
//This returns "undefined"
console.log(filteredItems);
},
filterProperties: 'Name'
});
您正在设置$scope.hops
何时成功解析承诺(即异步)。基本上,您正在执行控制台.log在承诺得到解决之前,并且范围上没有跃点。网上有关于承诺的信息语气。我个人喜欢这样的解释:https://stackoverflow.com/a/15738351/3927379
替换
filterBarInstance = $ionicFilterBar.show({
items: $scope.hops,
update: function(filteredItems) {
$scope.hops = filteredItems;
//This returns "undefined"
console.log(filteredItems);
},
filterProperties: 'Name'
});
跟
filterBarInstance = $ionicFilterBar.show({
items: $scope.hops,
update: function(filteredItems, filterText) {
$scope.hops = filteredItems;
//This returns "undefined"
console.log(filteredItems);
},
filterProperties: 'Name'
});
相关文章:
- AngularJS:ng之后,重复$scope值未按预期更新
- 相位器状态未捕获参考错误
- $ionicplatform内的$scope不;不起作用
- 使用$scope方法时的ControllerAs语法
- 聚合物0.5.5:核心列表中的条件模板和/或模板动态参考
- Javascript袖珍参考,第121页:这是怎么回事;猴子补丁”;方法应该有效
- 如何将ngrepeat下的ngmodel绑定到$scope
- 另一个if(!$scope.$$phase)$scope$apply()szenario-需要帮助才能通关
- 使用AngularJS Directive WHITOUT$scope创建一个动态html元素
- $scope变量被视为字符串AngularJs
- ng在更新$scope后重复不更新信息
- 正在获取Angular以检测$scope中的更改
- 如何惯用地手动销毁scope&在AngularJS中重新创建
- Understanding Javascript scope with "var that = this&qu
- AngularJS,angular.element($0).scope()揭示了每个控制器的函数
- Ng出口无法访问父$scope
- ng选项-用vm替换$scope
- $scope变量,ng隐藏/显示
- 防止“;jQuery(html)"防止触发浏览器请求图像和其他参考内容
- 离子类型与离子过滤器-棒 - 不能参考$scope