Ng-model不会更新控制器的值。

13 浏览
0 Comments

Ng-model不会更新控制器的值。

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



{{ searchText }}

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

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

为什么我在点击按钮时能够正确地更新视图,但在控制台中看到未定义?

谢谢!

更新:

似乎我已经解决了这个问题(之前必须想出一些解决方案):

只需要将我的属性名称从searchText更改为search.text,然后在控制器中定义一个空$scope.search = {};对象,然后就......不知道为什么它能工作 :]

admin 更改状态以发布 2023年5月20日
0
0 Comments

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);
}

0
0 Comments

如果你使用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

0