【问题标题】:AngularJs scope undefined while binding a textbox绑定文本框时未定义AngularJs范围
【发布时间】: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.mdItemIdThis_Controller.mdFlavorId。无法解释原因,但这解决了我过去遇到的类似问题。此外,正如@AndroidNoobie 所建议的,您应该在控制器级别定义它们,而不是在其中包含的任何函数中。

标签: angularjs angularjs-directive angularjs-scope angularjs-bindings


【解决方案1】:

像这样试试。

 var itemDtls  = response.data;
 $scope.mdItemId = itemDtls [0].ITEM_ID;

【讨论】:

    猜你喜欢
    • 2013-09-09
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    相关资源
    最近更新 更多