2016-10-03 6 views
2

Ich habe ein MVC-Projekt mit AngularJS. In meinem Controller möchte ich $scope.userRole, um eine Zeichenfolge Admin anzuzeigen, wenn der Benutzer ein Admin ist. Ich habe versucht, dieses Problem zu lösen mit ng-bind aber es gibt undefined für $scope.data.admin in meinem if-statementNg-bind zeigt undefined in Controller

@if (User.IsInRole("Admin") 
{ 
    <div ng-Controller="ctrl" ng-bind="data.admin" > 
     @Html.Partial("AdminPartial") 
    </div 
} 

Und mein AngularJS:

$scope.userRole = ""; 
$scope.data = {}; 
if ($scope.data.admin != null && $scope.data.admin != "") { 
    $scope.userRole = "Admin"; 
} else { 
    $scope.userRole = "User"; 
} 

$scope.data.admin ist nicht definiert, und ich weiß nicht, warum. Ich sollte hinzufügen, dass ich AngularJS ziemlich neu bin.

+0

'ng-Modell 'funktioniert nicht auf div verwenden, sollten Sie eine Eingabetyp des Elements haben zuweisen' ng-Modell' – Rakeschand

+0

Sie verfehlten auch ein "=" zwischen t er ng-Modell und Wert. –

+0

@Rakeschand Gibt es einen anderen Weg, das Problem zu lösen? – Benji

Antwort

0

Sie können ng-model nicht an eine div binden. Verwenden Sie ng-bind statt

<div ng-Controller="ctrl" ng-bind="data.admin" ></div> 
0

ngModel kann grundsätzlich binden mit input, select und textareangModel sehen

0

Sie verwenden ng-model auf einem div was nicht möglich ist. Wenn Sie eine Zwei-Wege-Bindung wollen, sollten Sie eine input oder textarea oder checkbox oder ... etwas verwenden, wo der Benutzer interagieren kann.

In Ihrem Fall scheint es, dass Ihr für eine Einweg suchen Bindung (Nur der Wert der Variablen angezeigt werden), dann sollten Sie {{variable}} oder ng-bind

@if (User.IsInRole("Admin") 
{ 
    <div ng-Controller="ctrl" ng-bind="data.admin" > 
     @Html.Partial("AdminPartial") 
    </div 
} 

ODER Sie verwenden, um die div anzuzeigen wird der Benutzer admin ist .. dann sollten Sie ng-if

@if (User.IsInRole("Admin") 
{ 
    <div ng-Controller="ctrl" ng-if="data.admin" > 
     @Html.Partial("AdminPartial") 
    </div 
} 
+0

Dies gibt immer noch 'undefiniert' für $ scope.data.admin im Angular-Controller zurück – Benji

+0

Initialisierst du '$ scope.data.admin'? – Weedoze

+0

Sie sollten dies irgendwo haben: '$ scope.data.admin = false;' und es muss irgendwo auf den richtigen Wert gesetzt werden – Weedoze

Verwandte Themen