可能是愚蠢的问题,但是我的html表单带有简单的输入和按钮:
<input type="text" ng-model="searchText" /> <button ng-click="check()">Check!</button> {{ searchText }}
然后在控制器中(从routeProvider调用模板和控制器):
$scope.check = function () { console.log($scope.searchText); }
为什么单击按钮后,视图在控制台中正确更新但未定义?
谢谢!
更新:似乎我实际上已经解决了该问题(之前不得不提出一些解决方法):仅需将我的属性名称从更改searchText为search.text,然后$scope.search= {};在控制器中定义空对象,瞧……不知道为什么它起作用虽然;]
searchText
search.text
$scope.search= {};
控制器作为 版本(推荐)
这里的模板
<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); }