2017-07-24 3 views
0

Ich versuche, einige Daten von einem Controller per Routing an eine Ansichtsdatei zu übergeben. Ich bin mir nicht sicher, ob ich die Nachricht korrekt übermittelte.Angular Übergeben von Daten zum Status vom Controller

Unten ist meine Codierung.

-Controller

$scope.roleUsers = function(roleId){ 
    $scope.testvar = "Role Id Is" + roleId; 
    console.log($scope.testvar); 
    $state.go('roleUsers'); 
} 

Strecke

.state('roleUsers', { 
    url: '/roleUsersList', 
    templateUrl: 'views/modals/roles/roleUsersList.html', 
    controller: function($scope) { 
     $scope.testvar = "Sent by route file"; 
    } 
}) 

Ansicht (roleUsersList.html)

<label>asas{{ testvar }}</label> 

Wie bekomme ich es "Role-ID ist X" in der HTML-Darstellung angezeigt werden ?

Letztlich versuche ich einige Daten (ein Array) aus einer API zu holen und in einer neuen Ansicht zu zeigen. Dies ist nur ein grundlegender Weg meiner anfänglichen Annäherung an das Endziel.

Die Daten, die angezeigt werden müssen, müssen vom Controller kommen (soweit ich Angular verstehe), da die Daten abhängig von anderen Eingaben des Benutzers unterschiedlich sein werden.

Ich denke, ich kann die Daten von einem Service/Factory übergeben (Singleton ich denke, es ist nicht geeignet für eine dynamische Umgebung?) Und verwenden Sie einen zweiten Controller oder $ RootScope mit dem zweiten Controller verwenden. Ich versuche nur herauszufinden, ob dies innerhalb desselben Controllers erreicht werden kann.

+0

Was ist RoleID und wenn die Funktion aufgerufen? – Vivz

+0

Setzen Sie einfach Ihre Daten (Array) auf $ rootScope und greifen Sie auf dieses Array in einem anderen Controller zu. –

+0

@Viva es wird durch einen ng-Klick in das vorhandene Display gesendet –

Antwort

1

Sie Parameter in Ihrem Routing senden können:

$state.go('roleUsers', { roleId: someValue }); 

Oder in html:

<a ui-sref="roleUsers({ roleId: someValue })>..</a> 

Und in Ihrer Definition:

.state('roleUsers', { 
    url: '/roleUsersList/:roleId', 
    templateUrl: 'views/modals/roles/roleUsersList.html' 
}) 

Und Ihre Controller:

function($scope, $stateParams) { 
    $scope.testvar = $stateParams.roleId; 
} 

Wenn Sie nicht wollen, werden die Parameter in der Abfrage-String angezeigt werden, können Sie die params Option:

.state('roleUsers', { 
    url: '/roleUsersList', 
    templateUrl: 'views/modals/roles/roleUsersList.html' 
    params: { 
     roleId: null 
    } 
}) 

Siehe this documentation

Verwandte Themen