2016-05-11 10 views
0

Unter meinen Code-Schnipsel istPass Wert als Parameter von ngDialog auf einen anderen Controller

$scope.openrights = function (userid) { 
    $scope.valid = userid; 
    ngDialog.open({ 
    template: 'views/rightsassignment.html', 
    controller: 'RightsCtrl', 
    className: 'ngdialog-theme-default ngdialog-theme-custom', 
    scope: $scope 
    }); 
}; 

Problem Ich habe ist, --- ich konnte nicht die 'gültig' scoped Wert übergeben RightsCtrl an die Steuerung.

scope: $ scope übergibt den Wert nur an die HTML-Vorlage, die als interpolierter Wert {{valid}} erwähnt wird.

Wie übergeben Sie den Wert 'gültig' als Parameter an RightsCtrl als $ state.params.valid?

Jede mögliche Hilfe

Ich habe einen Zustand, in app.js als

.state('companyadmin.rightsassignment', { 
    url: '/rightsassignment/:valid', 
    templateUrl: 'views/rightsassignment.html', 
    controller: 'RightsCtrl', 
    title: 'Welcome Company Admin' 

    }) 
+0

Warum haben Sie einen eigenen Staat für ng-Dialog? Ich habe ng-dialog erfolgreich benutzt, ohne Status zu machen und Parameter weiterzugeben. Ich konnte auf $ scope.valid im Dialog-Controller zugreifen. –

+0

Könnten Sie bitte – Subhajit

+0

ausarbeiten ich gemeint, wenn Sie $ Bereich zwischen Dialog und übergeordneten Controller freigeben, sind alle übergeordneten Controller $ Scope-Variablen im Dialog auf die gleiche Weise zugänglich –

Antwort

0

Übergeben Sie die Parameter als Abfrage param zu diesem Zustand oder aufrechtzuerhalten eine Variable in rootScope geschätzt.

$rootScope.isValid = false; 

Ändern Sie diesen Wert IsValid in Ihrem ngDialog entsprechend Controller.

Da $rootScope in allen Controllern verfügbar ist, sollten Sie in der Lage sein, es zu verwenden.

Edit: Ich sehe, dass Sie einen Pfad param: gültig in Ihrem Staat haben. Sie sollten Ihre valid Gültig in diesem Status übergeben, wenn Sie von modal zu Status wechseln. Diese

$state.go("companyadmin.rightsassignment", { "valid": true } 
+0

Könnten Sie bitte ein Schnipsel Ihrer Antwort geben – Subhajit

+0

Aktualisiert meine antworten mit mehr Informationen. –

+0

Verwenden von $ rootScope zum Übergeben von Daten wird nicht empfohlen, da es den Namespace auffüllt. Sie können mehr darüber hier lesen: - https://www.quora.com/Is-it-vorzugsweise-zu-use-rootscope-in-AnGularJS-zu-pass-daten-von-einem-Controller-zu-anderen –

0

Check - Sie müssen Variablen mit Daten Eigenschaft passieren

$scope.valid = userid; 
ngDialog.open({ template: 'templateId', 
className: 'ngdialog-theme-default ngdialog-theme-custom', 
data: $scope.valid, 
controller: ['$scope', function($scope) { 

     // controller logic 

       alert($scope.valid); 


    }] 
    });