【问题标题】:AngularJS Cannot read property of undefinedAngularJS无法读取未定义的属性
【发布时间】:2017-01-04 12:47:38
【问题描述】:

我正在尝试获取日期值。每当未选中该复选框并且日期选择器不可见时,我都会收到以下错误消息:“无法读取未定义的属性 'NTLI'”。如果复选框被选中并且日期选择器可见,则一切正常

<md-checkbox ng-model="user.NTLI" layout="row" ng-disabled="userForm.$invalid">
  NTLI
</md-checkbox>
<div ng-show="user.NTLI">
<fieldset class="standard">
    <legend>NTLI</legend>
    <md-input-container>
        <label>Efective date</label>
        <md-datepicker ng-model="user.efectiveDateNTLI"></md-datepicker>
    </md-input-container>
</fieldset>
</div>
var efDate = '';
if ($scope.user.NTLI != undefined) 
{
    efDate = $scope.user.efectiveDateNTLI
}

【问题讨论】:

  • 在您的控制器中,将其设置为 user.NTLI = false;,您会收到此错误,因为它不存在。
  • 您的应用中是否有任何地方绑定到用户本身?
  • 一个建议(有点离题):把写{的习惯留在下一行。它应该在同一行。

标签: javascript angularjs


【解决方案1】:

你需要有用户定义,

$scope.user ={};
if ($scope.user.NTLI != undefined) 
{
    efDate = $scope.user.efectiveDateNTLI
}

【讨论】:

    【解决方案2】:

    如果您的 user 对象,初始值是多少?您需要先初始化它才能从$scope 访问。

    $scope.user = {};
    

    【讨论】:

      【解决方案3】:

      ng-init 上分配user = {}

      喜欢

      <div ng-init="user = {}"> 
      ...
      ..//code
      ...
      </div>
      

      但其他答案也是正确的。

      【讨论】:

        【解决方案4】:

        由于user 不可用,它在读取它的属性时显示undefined。只需添加以下内容:

        $scope.user = {};

        在您的控制器中。

        【讨论】:

          猜你喜欢
          • 2016-10-23
          • 2017-04-28
          • 2019-09-16
          • 2016-07-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多