【问题标题】:Ng-bind showing undefined in controllerNg-bind 在控制器中显示未定义
【发布时间】:2017-02-11 08:32:06
【问题描述】:

我有一个使用 AngularJS 的 MVC 项目。在我的控制器中,如果用户是管理员,我希望 $scope.userRole 显示字符串 Admin。我试图用ng-bind 解决这个问题,但它在我的if-statement 中为$scope.data.admin 返回undefined

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

还有我的 AngularJS:

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

$scope.data.admin 未定义,我不知道为什么。我应该补充一点,我对 AngularJS 还很陌生

【问题讨论】:

  • ng-model 不适用于 div,您应该有一个输入类型的元素来分配 ng-model
  • 您还错过了 ng-model 和 value 之间的“=”。
  • @Rakeschand 有没有其他方法可以解决这个问题?

标签: javascript angularjs angular-ngmodel


【解决方案1】:

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

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

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

或者你想显示div是用户是管理员..那么你应该使用ng-if

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

【讨论】:

  • 这仍然会在 Angular 控制器中为 $scope.data.admin 返回 undefined
  • 你在初始化$scope.data.admin吗?
  • 你应该在某个地方有这个:$scope.data.admin = false; 并且它必须在某个地方设置为正确的值
  • 我尝试过启动$scope.data = { admin: false };,然后使用ng-init="data.admin = 'true'",但控制器中仍然是false。我真正想要的是根据用户是否具有管理员角色来访问字符串。
  • 您不应该使用ng-init 来定义管理员的值。你从哪里得到这个值?你什么时候想说它是真的还是假的?您应该在控制器内创建一个函数
【解决方案2】:

ngModel基本上可以绑定inputselecttextareangModel

【讨论】:

    【解决方案3】:

    您不能将ng-model 绑定到div。请改用ng-bind

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

    【讨论】:

      猜你喜欢
      • 2015-11-06
      • 2016-03-15
      • 2015-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-17
      • 1970-01-01
      相关资源
      最近更新 更多