为什么我的angularjs ng-model值未定义?

时间:2017-09-21 15:49:22

标签: angularjs angularjs-ng-model

假设我有一个文本框和ng-model。我得到了textbox undefined的值。如果我给ng-model名称一个对象类型,那么它工作正常。

HTML

<input type="text" ng-model="search" ng-change="test()">

控制器

$scope.test=function()
{
  var val=$scope.search;
  alert(val);
}

如果我们在文本框中给出值,它总是警告undefined。 如果我们像这样给出函数之外的值

$scope.search=33;
$scope.test=function()
{
      var val=$scope.search;
      alert(val);
 }

它在文本框中显示值

现在我改变了方案

HTML:

<input type="text" ng-model="search.text" ng-change="test()">

控制器:

$scope.search={'text':''};
$scope.test=function()
{
  var val=$scope.search.text;
  alert(val);
}

现在我得到了文本框的值。第一个场景中的问题是什么。

请帮忙。提前致谢。

1 个答案:

答案 0 :(得分:1)

如果您希望$scope.search成为对象,那么您拥有的内容无需初始化$scope.search=33;$scope.search={'text':''};即可。

如果您希望$scope.search成为字符串,那么您仍然无需初始化,但需要将ng-model绑定更改为ng-model="search"而不是ng-model="search.text"

尝试以下方法:

var app = angular.module('app',[]);
app.controller('ctrl', ['$scope', function($scope) {
  $scope.testSearchText=function()
  {
    var val=$scope.searchText;
    alert(JSON.stringify(val));
  };

  $scope.testSearchObject=function()
  {
    var val=$scope.searchObj;
    alert(JSON.stringify(val));
  };
}]);

<div ng-app="app">
  <div ng-controller="ctrl">
    <form>
      <div>
        <label for="SearchText">Search Text</label>
        <input type="text" ng-model="searchText" ng-change="testSearchText()">
      </div>
      <div>
        <label for="SearchText">Search Object</label>
        <input type="text" ng-model="searchObj.text" ng-change="testSearchObject()">
      </div>
    </form>
  </div>
</div>

或者看看plunker:time comparison ignore korean