fix(scroll): find delegate by historyId

Closes #2572
This commit is contained in:
Adam Bradley
2014-11-18 16:07:55 -06:00
parent bc3826d5c0
commit 46cbaf9527
6 changed files with 21 additions and 10 deletions

View File

@@ -335,11 +335,12 @@ function($scope, $element, $attrs, $compile, $timeout, $ionicNavBarDelegate, $io
self.title = function(newTitleText, headerBar) {
if (arguments.length) {
if (isDefined(newTitleText)) {
newTitleText = newTitleText || '';
headerBar = headerBar || getOnScreenHeaderBar();
headerBar && headerBar.title(newTitleText);
$scope.$title = newTitleText;
$ionicHistory.currentTitle(newTitleText);
}
return $scope.$title;
};

View File

@@ -11,7 +11,8 @@ IonicModule
'$location',
'$document',
'$ionicScrollDelegate',
function($scope, scrollViewOptions, $timeout, $window, $location, $document, $ionicScrollDelegate) {
'$ionicHistory',
function($scope, scrollViewOptions, $timeout, $window, $location, $document, $ionicScrollDelegate, $ionicHistory) {
var self = this;
// for testing
@@ -31,7 +32,7 @@ function($scope, scrollViewOptions, $timeout, $window, $location, $document, $io
var deregisterInstance = $ionicScrollDelegate._registerInstance(
self, scrollViewOptions.delegateHandle, function() {
return !$scope.$$disconnected;
return !$scope.$$disconnected && $ionicHistory.currentHistoryId() == $scope.$historyId;
}
);

View File

@@ -4,9 +4,8 @@ IonicModule
'$element',
'$attrs',
'$compile',
'$ionicHistory',
'$ionicViewSwitcher',
function($scope, $element, $attrs, $compile, $ionicHistory, $ionicViewSwitcher) {
function($scope, $element, $attrs, $compile, $ionicViewSwitcher) {
var self = this;
var navElementHtml = {};
var navViewCtrl;
@@ -44,8 +43,6 @@ function($scope, $element, $attrs, $compile, $ionicHistory, $ionicViewSwitcher)
var viewTitle = $attrs.viewTitle || $attrs.title;
$ionicHistory.currentTitle(viewTitle);
var buttons = {};
for (var n in navElementHtml) {
buttons[n] = generateButton(navElementHtml[n]);
@@ -77,7 +74,6 @@ function($scope, $element, $attrs, $compile, $ionicHistory, $ionicViewSwitcher)
if (viewTitleAttr) {
deregisters.push($attrs.$observe(viewTitleAttr, function(val) {
navViewCtrl.title(val);
$ionicHistory.currentTitle(val);
}));
}

View File

@@ -1,5 +1,9 @@
function delegateService(methodNames) {
if (methodNames.indexOf('$getByHandle') > -1) {
throw new Error("Method '$getByHandle' is implicitly added to each delegate service. Do not list it as a method.");
}
function trueFn() { return true; }
return ['$log', function($log) {
@@ -90,7 +94,7 @@ function delegateService(methodNames) {
//This logic is repeated above
instances.forEach(function(instance, index) {
if (instance.$$filterFn()) {
if (instance.$$filterFn(instance)) {
matchingInstancesFound++;
result = instance[methodName].apply(instance, args);
//Only return the value from the first call

View File

@@ -444,6 +444,16 @@ function($rootScope, $state, $location, $window, $ionicViewSwitcher) {
return viewHistory.currentView;
},
/**
* @ngdoc method
* @name $ionicHistory#currentHistoryId
* @description The ID of the history stack which is the parent container of the current view.
* @returns {string} Returns the current history ID.
*/
currentHistoryId: function() {
return viewHistory.currentView ? viewHistory.currentView.historyId : null;
},
/**
* @ngdoc method
* @name $ionicHistory#currentTitle

View File

@@ -145,6 +145,5 @@ IonicModule
*
* Example: `$ionicScrollDelegate.$getByHandle('my-handle').scrollTop();`
*/
'$getByHandle'
]));