我是角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'
我无法找到解决方案。请做好建议。谢谢。
答案 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
)