2016-09-07 2 views
1

Довольно новый для углового и с небольшой проблемой получения данных от контроллера и отображения в поле зрения с использованием ионных.Использовать данные с точки зрения контроллера от ng-click angular

У меня есть функция в контроллере ('DashCtrl'), где я передаю строку для использования внутри функции с помощью ng-click. Пока я просто хочу взять эту строку и отобразить ее в следующем представлении, так как у меня есть href на том же элементе, у которого есть событие ng-click.

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

Heres код:

HTML

* первая страница

<ul contentful-entries> 
    <div ng-repeat="story in $contentfulEntries.items"> 
    <li class="story col col-100"> 
     <a href="#/tab/story/{{story.fields.slug}}" ng-click='storyDetails("{{story.fields.title}}")'> 
     <p>{{ story.fields.title }}</p> 
     </a> 
    </li> 
    </div> 
</ul> 

* перенаправляет к этому на нг щелкните

<ion-view view-title="Story"> 
    <ion-nav-buttons side="left"> 
    <button class="button back-button buttons button-clear header-item" ng-click="goBack()"> 
     <i class="icon ion-ios-arrow-back"> Back</i> 
    </button> 
    </ion-nav-buttons> 
    <ion-content> 
    <ion-list ng-controller="DashCtrl"> 
     <h1>{{ story.slug }} </h1> 
     <p> <!-- HERE IS WHERE I WANT TO DISPLAY THE STRING --> </p> 
    </ion-list> 
    </ion-content> 
</ion-view> 

* Heres мой контроллер

.controller('DashCtrl', function($scope, $stateParams, $ionicHistory) { 

    $scope.storyDetails = function($scope, details) { 
    // here is the data i need to display in the view 
    // the console.log shows up in the browser 
    console.log(details); 
    } 

    $scope.goBack = function(){ 
    $ionicHistory.goBack(); 
    } 

    // this is working fine 
    $scope.story = $stateParams; 
}) 
+0

Возможно, я сделал это неправильно, и люди сказали, что не используют его, но я получил эту работу, используя «rootScope», чтобы сохранить переменную и перейти к следующему виду. Я узнал, что журнал действительно имел место на первом взгляде, а не на втором взгляде, который я думал. – luke

ответ

0

В итоге я использовал $ rootScope. Я знаю, что это может быть не лучшее решение, но я просто пытаюсь понять Angular на данный момент.

В моем контроллере я использовал

.controller('DashCtrl', function($scope, $stateParams, $rootScope, $ionicHistory) { 

    $scope.goBack = function(){ 
    $ionicHistory.goBack(); 
    } 

    $scope.storyDetails = function(details) { 
    $rootScope.details = details; 
    return $rootScope.details; 
    } 
}) 

Тогда я могу использовать $ rootScope.details в другом контроллере для использования в функции мне нужна строка для.

Я знаю, что я не делаю этого с угловым способом, поэтому, если бы кто-нибудь был достаточно любезен, чтобы показать мне, как это сделать «правильно», не используя rootScope, я буду навсегда в вашем долге.

0

Сохраните строку сведений как переменную контроллера, а затем вы можете получить доступ к ней в представлении.

+0

Я сохраняю строку как переменную контроллера, но получаю undefined, когда я пытаюсь привязать ее к представлению. любые мысли о том, что делать дальше? – luke

+0

в коде, который вы опубликовали, вы не сохраняете его как переменную контроллера – holtc

+0

Я имею в виду, что я вошел и сохранил его как переменную контроллера, но я все еще получал неопределенную пустую переменную. – luke

0

Назначьте переменную details какой-либо другой переменной, например $scope.newVar = details, а затем в представлении ура вы можете отобразить это, просто привязывая ее таким образом {{newVar}}.

Упование вы получили.

+0

Это не работает для меня. Я получаю неопределенную переменную, хотя я назначил ее другой переменной. Когда я регистрирую переменную, она отображается как неопределенная и не отображается, когда я привязываю ее к представлению. – luke

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