2015-05-08 2 views
0

Вот пример кода. Когда я нажимаю кнопку «Научные факты», она направляется на страницу фактов.ionic link to view, получить название ссылки для просмотра-заголовка

На странице фактов мне нужно вручную набрать view-title="facts", поэтому заголовок может отображать заголовок «факты».

Возможно ли получить текст кнопки (научные факты) автоматически, чтобы быть названием?

http://codepen.io/ionic/pen/odqCz

<html ng-app="ionicApp"> 

<title>Tabs Example</title> 

<link href="//code.ionicframework.com/nightly/css/ionic.css" rel="stylesheet"> 
<script src="//code.ionicframework.com/nightly/js/ionic.bundle.js"></script> 

<ion-nav-bar class="bar-positive"> 
    <ion-nav-back-button> 
    </ion-nav-back-button> 
</ion-nav-bar> 

<ion-nav-view></ion-nav-view> 


<script id="templates/tabs.html" type="text/ng-template"> 
    <ion-tabs class="tabs-icon-top tabs-positive"> 

    <ion-tab title="Home" icon="ion-home" href="#/tab/home"> 
     <ion-nav-view name="home-tab"></ion-nav-view> 
    </ion-tab> 

    <ion-tab title="About" icon="ion-ios-information" href="#/tab/about"> 
     <ion-nav-view name="about-tab"></ion-nav-view> 
    </ion-tab> 

    <ion-tab title="Contact" icon="ion-ios-world" ui-sref="tabs.contact"> 
     <ion-nav-view name="contact-tab"></ion-nav-view> 
    </ion-tab> 

    </ion-tabs> 
</script> 

<script id="templates/home.html" type="text/ng-template"> 
    <ion-view view-title="Home"> 
    <ion-content class="padding"> 
     <p> 
     <a class="button icon icon-right ion-chevron-right" href="#/tab/facts">Scientific Facts</a> 
     </p> 
    </ion-content> 
    </ion-view> 
</script> 

<script id="templates/facts.html" type="text/ng-template"> 
    <ion-view view-title="Facts"> 
    <ion-content class="padding"> 
     <p>Banging your head against a wall uses 150 calories an hour.</p> 
     <p>Dogs have four toes on their hind feet, and five on their front feet.</p> 
     <p>The ant can lift 50 times its own weight, can pull 30 times its own weight and always falls over on its right side when intoxicated.</p> 
     <p>A cockroach will live nine days without it's head, before it starves to death.</p> 
     <p>Polar bears are left handed.</p> 
     <p> 
     <a class="button icon ion-home" href="#/tab/home"> Home</a> 
     <a class="button icon icon-right ion-chevron-right" href="#/tab/facts2">More Facts</a> 
     </p> 
    </ion-content> 
    </ion-view> 
</script> 

<script id="templates/facts2.html" type="text/ng-template"> 
    <ion-view view-title="Also Factual"> 
    <ion-content class="padding"> 
     <p>111,111,111 x 111,111,111 = 12,345,678,987,654,321</p> 
     <p>1 in every 4 Americans has appeared on T.V.</p> 
     <p>11% of the world is left-handed.</p> 
     <p>1 in 8 Americans has worked at a McDonalds restaurant.</p> 
     <p>$283,200 is the absolute highest amount of money you can win on Jeopardy.</p> 
     <p>101 Dalmatians, Peter Pan, Lady and the Tramp, and Mulan are the only Disney cartoons where both parents are present and don't die throughout the movie.</p> 
     <p> 
     <a class="button icon ion-home" href="#/tab/home"> Home</a> 
     <a class="button icon ion-chevron-left" href="#/tab/facts"> Scientific Facts</a> 
     </p> 
    </ion-content> 
    </ion-view> 
</script> 

<script id="templates/about.html" type="text/ng-template"> 
    <ion-view view-title="About"> 
    <ion-content class="padding"> 
     <h3>Create hybrid mobile apps with the web technologies you love.</h3> 
     <p>Free and open source, Ionic offers a library of mobile-optimized HTML, CSS and JS components for building highly interactive apps.</p> 
     <p>Built with Sass and optimized for AngularJS.</p> 
     <p> 
     <a class="button icon icon-right ion-chevron-right" href="#/tab/navstack">Tabs Nav Stack</a> 
     </p> 
    </ion-content> 
    </ion-view> 
</script> 

<script id="templates/nav-stack.html" type="text/ng-template"> 
    <ion-view view-title="Tab Nav Stack"> 
    <ion-content class="padding"> 
     <p><img src="http://ionicframework.com/img/diagrams/tabs-nav-stack.png" style="width:100%"></p> 
    </ion-content> 
    </ion-view> 
</script> 

<script id="templates/contact.html" type="text/ng-template"> 
    <ion-view title="Contact"> 
    <ion-content> 
     <div class="list"> 
     <div class="item"> 
      @IonicFramework 
     </div> 
     <div class="item"> 
      @DriftyTeam 
     </div> 
     </div> 
    </ion-content> 
    </ion-view> 
</script> 

ответ

2

Я не совсем уверен, что мотивация этого запроса, но один возможный способ решить эту проблему можно было бы добавить нужное название в URL якоря, который перенаправляет на страницу «фактов», то есть:

<a class="button icon icon-right ion-chevron-right" href="#/tab/facts?title=Scientific%20Facts">Scientific Facts</a> 

Если вы изменить свой маршрут на страницу, чтобы быть в курсе, что пары запросов, вы можете воспользоваться услугой $ stateParams в пределах этой страницы ' s контроллер для получения этого значения, т.е .:

.state('tabs.facts', { 
    url: "/facts?:title", 
    views: { 
    'home-tab': { 
     templateUrl: "templates/facts.html" 
    } 
    } 

Обратите внимание на URL «/ факты:? титульных» - от «: название» теперь становится параметром, который будет подобран службой $ stateParam.Теперь в вашем контроллере вы можете просто сделать это:

.controller('FactController', function ($scope, $stateParams) { 
    $scope.title = $stateParams.title; 
}); 

Теперь вы можете ссылаться на этот титул прямо из Факты с помощью {{название}}.

Вот обновленная ручка, которая показывает эту работу. http://codepen.io/anon/pen/OVMbVX

Кажется, что много усилий, хотя, просто пройти по названию ;-)

Лучший подход мог бы создать «имена страниц» сервис, который имеет все ваши имена страниц в одном месте , а затем захватить эти службы от обоих контроллеров; на домашнем контроллере вы можете использовать имя страницы, чтобы настроить текст привязки, а на другой странице - настроить заголовок страницы. Множество способов кожи этой кошки.

+0

Ницца, и мы согласны с тем, что лучший OP может сделать это, чтобы определить услугу: +1 – mrak

2

Есть два способа для достижения этой цели:

1) Наиболее очевидные один делаются с прототипным наследованием контроллера в угловом. Вам необходимо объявить контроллер для состояния tabs. В $scope в этом контроллере вы можете определить название для кнопки и заголовок в качестве переменной области действия, напр:

$scope.testTitle = 'Scientific Facts'; 

Теперь, поскольку каждый контроллер наследует от контроллера лапок, то testTitle свойства также в унаследованном и может использоваться для визуализации названия.

Обновлено codepen: http://codepen.io/anon/pen/mJVOJJ

я бы не рекомендовал делать это таким образом, так как трудно знать, какие свойства определяются в каком контроллере и это будет получить очень грязно со временем.

2) Вы можете объявить сервис и определить его свойство. Чем вы можете ввести службу в контроллер, чтобы получить свойство title. Таким образом, вы держите $scope в чистоте:

.factory('TitleService', function() { 
    var titles = { 
    t1:'foobar', 
    t3:'baz', 
    t4:'bar' 
    }; 
    return titles; 
}); 

Codepen: http://codepen.io/anon/pen/xGZRZM

Смежные вопросы