一尘不染

NG模型不会更新控制器值

javascript

可能是愚蠢的问题,但是我的html表单带有简单的输入和按钮:

<input type="text" ng-model="searchText" />
<button ng-click="check()">Check!</button>
{{ searchText }}

然后在控制器中(从routeProvider调用模板和控制器):

$scope.check = function () {
    console.log($scope.searchText);
}

为什么单击按钮后,视图在控制台中正确更新但未定义?

谢谢!

更新:似乎我实际上已经解决了该问题(之前不得不提出一些解决方法):仅需将我的属性名称从更改searchTextsearch.text,然后$scope.search= {};在控制器中定义空对象,瞧……不知道为什么它起作用虽然;]


阅读 202

收藏
2020-05-01

共1个答案

一尘不染

控制器作为 版本(推荐)

这里的模板

<div ng-app="example" ng-controller="myController as $ctrl">
    <input type="text" ng-model="$ctrl.searchText" />
    <button ng-click="$ctrl.check()">Check!</button>
    {{ $ctrl.searchText }}
</div>

JS

angular.module('example', [])
  .controller('myController', function() {
    var vm = this;
    vm.check = function () {
      console.log(vm.searchText);
    };
  });

最好是使用Angular 2.x或Angular 1.5或更高版本的组件

方法(不推荐)

不建议这样做,因为字符串是原始的,强烈建议使用对象代替

在您的标记中尝试

<input type="text" ng-model="searchText" />
<button ng-click="check(searchText)">Check!</button>
{{ searchText }}

而这在您的控制器中

$scope.check = function (searchText) {
    console.log(searchText);
}
2020-05-01