修改ionic.bundle.js中53149行代码,
// buttonEle.appendChild(buttonTextEle);
ionic版本不同,位置可能不一样.具体参考下面代码
if (!hasInnerText) {
var buttonTextEle = $document[0].createElement('span');
buttonTextEle.className = 'back-text';
if (!hasButtonText && $ionicConfig.backButton.text()) {
buttonTextEle.innerHTML += '<span class="default-title">' + $ionicConfig.backButton.text() + '</span>';
}
if (!hasPreviousTitle && $ionicConfig.backButton.previousTitleText()) {
buttonTextEle.innerHTML += '<span class="previous-title"></span>';
}
// buttonEle.appendChild(buttonTextEle);
}
tElement.attr('class', 'hide');
tElement.empty();
函数全部代码
/**
* @ngdoc directive
* @name ionNavBackButton
* @module ionic
* @restrict E
* @parent ionNavBar
* @description
* Creates a back button inside an {@link ionic.directive:ionNavBar}.
*
* The back button will appear when the user is able to go back in the current navigation stack. By
* default, the markup of the back button is automatically built using platform-appropriate defaults
* (iOS back button icon on iOS and Android icon on Android).
*
* Additionally, the button is automatically set to `$ionicGoBack()` on click/tap. By default, the
* app will navigate back one view when the back button is clicked. More advanced behavior is also
* possible, as outlined below.
*
* @usage
*
* Recommended markup for default settings:
*
* ```html
* <ion-nav-bar>
* <ion-nav-back-button>
* </ion-nav-back-button>
* </ion-nav-bar>
* ```
*
* With custom inner markup, and automatically adds a default click action:
*
* ```html
* <ion-nav-bar>
* <ion-nav-back-button class="button-clear">
* <i class="ion-arrow-left-c"></i> Back
* </ion-nav-back-button>
* </ion-nav-bar>
* ```
*
* With custom inner markup and custom click action, using {@link ionic.service:$ionicHistory}:
*
* ```html
* <ion-nav-bar ng-controller="MyCtrl">
* <ion-nav-back-button class="button-clear"
* ng-click="myGoBack()">
* <i class="ion-arrow-left-c"></i> Back
* </ion-nav-back-button>
* </ion-nav-bar>
* ```
* ```js
* function MyCtrl($scope, $ionicHistory) {
* $scope.myGoBack = function() {
* $ionicHistory.goBack();
* };
* }
* ```
*/
IonicModule
.directive('ionNavBackButton', ['$ionicConfig', '$document', function($ionicConfig, $document) {
return {
restrict: 'E',
require: '^ionNavBar',
compile: function(tElement, tAttrs) {
// clone the back button, but as a <div>
var buttonEle = $document[0].createElement('button');
for (var n in tAttrs.$attr) {
buttonEle.setAttribute(tAttrs.$attr[n], tAttrs[n]);
}
if (!tAttrs.ngClick) {
buttonEle.setAttribute('ng-click', '$ionicGoBack()');
}
buttonEle.className = 'button back-button hide buttons ' + (tElement.attr('class') || '');
buttonEle.innerHTML = tElement.html() || '';
var childNode;
var hasIcon = hasIconClass(tElement[0]);
var hasInnerText;
var hasButtonText;
var hasPreviousTitle;
for (var x = 0; x < tElement[0].childNodes.length; x++) {
childNode = tElement[0].childNodes[x];
if (childNode.nodeType === 1) {
if (hasIconClass(childNode)) {
hasIcon = true;
} else if (childNode.classList.contains('default-title')) {
hasButtonText = true;
} else if (childNode.classList.contains('previous-title')) {
hasPreviousTitle = true;
}
} else if (!hasInnerText && childNode.nodeType === 3) {
hasInnerText = !!childNode.nodeValue.trim();
}
}
function hasIconClass(ele) {
return /ion-|icon/.test(ele.className);
}
var defaultIcon = $ionicConfig.backButton.icon();
if (!hasIcon && defaultIcon && defaultIcon !== 'none') {
buttonEle.innerHTML = '<i class="icon ' + defaultIcon + '"></i> ' + buttonEle.innerHTML;
buttonEle.className += ' button-clear';
}
if (!hasInnerText) {
var buttonTextEle = $document[0].createElement('span');
buttonTextEle.className = 'back-text';
if (!hasButtonText && $ionicConfig.backButton.text()) {
buttonTextEle.innerHTML += '<span class="default-title">' + $ionicConfig.backButton.text() + '</span>';
}
if (!hasPreviousTitle && $ionicConfig.backButton.previousTitleText()) {
buttonTextEle.innerHTML += '<span class="previous-title"></span>';
}
// buttonEle.appendChild(buttonTextEle);
}
tElement.attr('class', 'hide');
tElement.empty();
return {
pre: function($scope, $element, $attr, navBarCtrl) {
// only register the plain HTML, the navBarCtrl takes care of scope/compile/link
navBarCtrl.navElement('backButton', buttonEle.outerHTML);
buttonEle = null;
}
};
}
};
}]);