2016-10-03 64 views
2

我有一个MVC项目与AngularJS。在我的控制器中,如果用户是管理员,我希望$scope.userRole显示字符串Admin。我试着ng-bind来解决这一点,但它$scope.data.adminif-statementNg绑定显示控制器中未定义

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

而且我AngularJS返回undefined

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

$scope.data.admin是不确定的,我不知道为什么。我应该补充一点,我对AngularJS相当陌生

+0

'NG-model'不会对DIV工作,你应该有元素的输入类型指定'NG-model' – Rakeschand

+0

你也错过了“=”在t之间他的模型和价值。 –

+0

@Rakeschand是否有另一种解决问题的方法? – Benji

回答

0

您不能将ng-model绑定到div。使用ng-bind代替

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

ngModel基本上可以绑定inputselecttextarea看到ngModel

0

你是在一个div这是不可能使用ng-model。如果你想要一个双向绑定,你应该使用inputtextareacheckbox或...用户可以交互的东西。

在你的情况,似乎你正在寻找一个单向绑定(只显示变量的值),那么你应该使用{{variable}}ng-bind

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

或者你想显示div在用户为admin ..那么你应该使用ng-if

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

这仍然返回角度控制器中'$ scope.data.admin'的'undefined' – Benji

+0

您是否初始化'$ scope.data.admin'? – Weedoze

+0

你应该有这个地方:'$ scope.data.admin = false;'并且它必须设置为正确的值 – Weedoze