【发布时间】:2019-03-12 10:47:13
【问题描述】:
尝试使用以下代码将数据绑定到范围内的输入控件。
var app = angular.module('ng_app', []);
app.controller("ITEM_Ctrl", function ($scope, $http) {
var PlantId = "abcFC"; $scope.mdItemId; $scope.mdFlavorId; $scope.itemDtls = {};
$http({
method: 'GET',
url: 'http://localhost:12752/api/Item/GetItem',
params: { Plant_Id: PlantId, Item_Id: '1234567' }
}).then(function successCallback(response) {
debugger;
// $scope.itemDtls = {};
alert(response.data); --> in alert msg as [object Object]
// $scope.itemDtls = response.data; --> ReferenceError: itemDtls is not defined
// $scope.testmdItemId = itemDtls.ITEM_ID;
// $scope.itemDtls = response.data;
// $scope.mdItemId = response.data.ITEM_ID; --> scope mdItemId undefined
// $scope.mdItemId = JSON.parse(response.data.ITEM_ID);
// $scope.mdFlavorId = JSON.parse(response.data.FLAVOR_ID);
//.mdFlavorId = "test data"; -- > binding successfully
$scope.itemDtls = response.data;
$scope.mdItemId = itemDtls.ITEM_ID;
$scope.mdFlavorId = response.data.FLAVOR_ID;
}, function errorCallback(response) {
});
});
尝试以不同方式绑定到上面的输入控件,但将 msg 作为未定义的范围。
<body ng-app="ng_app">
<table ng-controller="ITEM_Ctrl">
<tr>
<td>
<div>
<input type="text" id="itemid" ng-model="mdItemId" />
</div>
<div>
<input type="text" id="flavorid" ng-value="mdFlavorId" />
</div>
</td>
</tr>
</table>
【问题讨论】:
-
您确定正在调用您的成功处理程序吗?
-
是的,可以获取调试器和警报消息。
-
您可能需要在 AJAX 请求之外定义变量,然后您可以在成功处理程序中更新它们。我的猜测是加载模板时,这些变量不存在。
-
在 ajax req 外部更新,但仍然存在同样的问题。
-
尝试使用额外的级别定义变量,例如
$scope.This_Controller.mdItemId和$scope.This_Controller.mdFlavorId,然后在页面中将它们称为This_Controller.mdItemId和This_Controller.mdFlavorId。无法解释原因,但这解决了我过去遇到的类似问题。此外,正如@AndroidNoobie 所建议的,您应该在控制器级别定义它们,而不是在其中包含的任何函数中。
标签: angularjs angularjs-directive angularjs-scope angularjs-bindings