如何使用"这个"设置从控制器到输入框的值。操作者

时间:2017-05-24 08:27:39

标签: angularjs angularjs-ng-repeat angular-controller

我是角js的新手。我从php成功获取数据,但是从控制器调用它,它不能正常工作?我没有收到任何错误,我的语法错误。

例如:假设,在输入框中输入A,然后在点击事件中,B应显示在另一个文本框中 如果输入P,则在单击事件时,应显示Q,依此类推。

我正在使用动态添加的行添加文本框。在每次点击时,都应显示数据。

HTML:

  <tr ng-repeat="bot in bottles">
  <td><input type="text" ng-model="bot.b_code" /></td>
  <td><input type="text" ng-click="accept1()" ng-model="bot.Pre_req"  /></td>
  </tr>
         <td><a href ng-click="remove_bottle(bottle)">Remove</a></td>
    </tr>
    <tr><td><a href ng-click="add_bottle()">Add</a></td></tr>

控制器:

   $scope.accept1=function(){
                  $http.get("machin.php", {params:{"W_id": this.bot.b_code}})
                     .success(function(response){
                        this.bot.Pre_req=response;
            }); 
    };

machin.php

if($W_id=='A')
 echo 'B'
else($W_id==P)
echo 'Q'

我无法找到解决方案。请做好建议。谢谢。

2 个答案:

答案 0 :(得分:0)

尝试将僵尸程序添加到$scope而不是this

$scope.accept1=function(){
    $scope.bot = {};
    $http.get("machin.php", {params:{"W_id": this.bot.b_code}})
        .success(function(response){
            $scope.bot.Pre_req=response;
    }); 
};

在这种情况下,this甚至不会引用accept1函数的范围,而是引用成功回调中的匿名函数的范围,这就是为什么它不能按原样运行的原因。您可以在console.log(this.bot)函数的末尾尝试accept1来确认这一点。它将是undefined

答案 1 :(得分:0)

由于您使用$scope方式实现内容,因此我建议您从控制器代码中完全删除this,因为它不会在视图上附加任何内容。

并且,进行以下更改:

1 。在控制器中定义ng-model objects,例如:

 $scope.bot = {b_code:'', Pre_req : ''};

2 。更改function call$scope的正确绑定,例如:

$scope.accept1=function(){
        var scope = $scope;
        $http.get("machin.php", {params:{"W_id": scope.bot.b_code}})
            .success(function(response){
                scope.bot.Pre_req=response;
        }); 
    };

另外,将.success更改为.then,因为它已弃用。

3 。我认为您还需要将ng-click目标更改为上输入。当您更改以下输入时。代码应该是:

  <td><input type="text" ng-click="accept1()" ng-model="bot.b_code" /></td>
  <td><input type="text" ng-model="bot.Pre_req"  /></td>

第二种方法:,如果您想使用this keywaord,我建议您阅读this syntax.。基本上你在html和JS中都有controller的别名,而this代表JS中的控制器别名。 (所以你摆脱了$scope