ng-model是未定义的,但是使用ng-show

时间:2015-11-26 18:51:58

标签: angularjs

我有非常基本的功能,就像在点击功能上获取文本值一样。我在ng-if里面有一个文本框。但当我试图获得它所说的价值时,undeifned'我对此很感兴趣并且知道ng-if创建自己的范围。所以如果它是真的那么为什么click函数在控制器中定义。 两者都在控制器中定义。 plnkr

app.controller('MainCtrl', function($scope) {
  $scope.comment="";
  $scope.showBox = function (){
    $scope.showTextBox = true;
  }
  $scope.getComment = function (){
    alert($scope.comment);
    $scope.showTextBox = false;
  }

});

2 个答案:

答案 0 :(得分:0)

ng-if创建一个新的子范围。 ng-show没有。 我猜测$ scope.comment是在ng-if。

中定义的

如果您不想使用ng-show,有时使用对象而不是简单变量就可以了。例如:

$scope.comment= { c: "" };
alert($scope.comment.c);
<textarea ng-model="comment.c">

更新了plunkr:http://plnkr.co/edit/DewF13GWVIS8bHQIIAbC?p=preview

答案 1 :(得分:0)

总是尝试在范围中使用点(。)来避免AngularJS中的继承问题。

尝试添加对象并在其上添加属性,例如 - $scope.data = {};,然后添加$scope.data.comment = {};

代码 -

app.controller('MainCtrl', function($scope) {
  $scope.data = {};
  $scope.data.comment="";
  $scope.showBox = function (){
    $scope.data.showTextBox = true;
  }
  $scope.getComment = function (){
    alert($scope.data.comment);
    $scope.data.showTextBox = false;
  }

});

http://plnkr.co/edit/33ENoFi6qHRPDJUjc6tc?p=preview