Ng-model不会更新控制器的值。
Ng-model不会更新控制器的值。
可能是一个愚蠢的问题,但我有一个简单的输入和按钮的html表单:
{{ searchText }}
然后在控制器中(模板和控制器是从routeProvider调用的):
$scope.check = function () { console.log($scope.searchText); }
为什么我在点击按钮时能够正确地更新视图,但在控制台中看到未定义?
谢谢!
更新:
似乎我已经解决了这个问题(之前必须想出一些解决方案):
只需要将我的属性名称从searchText
更改为search.text
,然后在控制器中定义一个空$scope.search = {};
对象,然后就......不知道为什么它能工作 :]
admin 更改状态以发布 2023年5月20日
Controller as 版本(推荐)
这里是模板
{{ $ctrl.searchText }}
JS 代码
angular.module('example', []) .controller('myController', function() { var vm = this; vm.check = function () { console.log(vm.searchText); }; });
一个例子:http://codepen.io/Damax/pen/rjawoO
最好使用 Angular 2.x、Angular 1.5 或更高版本的组件
########
旧 的方式(不推荐)
这是不推荐的,因为字符串是一个基本类型,强烈建议使用对象代替
在您的标记中尝试以下内容
{{ searchText }}
在您的控制器中尝试以下内容
$scope.check = function (searchText) { console.log(searchText); }
如果你使用ng-model,你必须在其中加入一个点。
将你的模型指向一个对象.属性,你就可以继续。
控制器
$scope.formData = {}; $scope.check = function () { console.log($scope.formData.searchText.$modelValue); //works }
模板
当涉及到子作用域,比如子路由或ng-repeat时,就会出现这种情况。子作用域创建了自己的值,产生了名称冲突,如这里所示:
更多信息请看这个视频剪辑:https://www.youtube.com/watch?v=SBwoFkRjZvE&t=3m15s