【问题标题】:Unable to refresh ng-model values and variables from controller?无法从控制器刷新 ng-model 值和变量?
【发布时间】:2017-04-10 09:52:21
【问题描述】:

我的视图部分有一些角度变量,并且希望在其值从控制器实时更改时进行更新。 pager 是我的模型,每当调用 setpage() 函数时,它都会由控制器更新。我在这里发布我的代码

html

<div class="col-sm-5 hidden-xs">
   <div class="dataTables_info" ng-model = "pager" id="example-datatables2_info" role="status" aria-live="polite">
      <strong>{{pager.startIndex}}</strong>-<strong>{{pager.endIndex + 1}}</strong> of <strong>{{list.count}}</strong>
   </div>
</div>

控制器

app.controller('listController',function($scope,$http,PagerService){

    $scope.list = {};
    $scope.pager = {};
    $scope.setPage = setPage;
    $scope.list = response;
    $scope.pageSize = "10";

    initController();

    function initController() {
        $scope.setPage(1);
    }

    function setPage(page,pageSize) {
        if (page < 1 || page > $scope.pager.totalPages) {
            return;
        }
        $scope.pager = PagerService.GetPager($scope.list.count, page,pageSize);
        if($scope.default != 1){

            var data = {"session_id":session_id, "offset":$scope.pager.startIndex, "limit":$scope.pager.pageSize};

            apiCall(data,"reportRoute.php?action=select&id="+id).then(function (res) {
                $scope.list.data = res.data.data;
                $scope.list.count = res.data.count;
                $scope.list.default = res.data.default;

            });
        }

    }


    function apiCall(postData, postUrl){
        postUrl = 'https://example.com/routes/'+postUrl;
        //getData = {action:validate,id:id};
        return $http({
            method  : 'POST',
            url     : postUrl,
            data    : postData,
            headers : {'Content-Type': 'application/json'},
            //params  : getData
        })
    }

})

寻呼机对象第一次

{totalItems: 33287, currentPage: 1, pageSize: 10, totalPages: 3329, startPage: 1,startIndex:0,endIndex:9}

点击分页第二页时的分页器对象

{totalItems: 33287, currentPage: 1, pageSize: 10, totalPages: 3329, startPage: 1,startIndex:10,endIndex:19}

所以在第二次点击时,角度变量不会实时更新。

【问题讨论】:

  • 你不能将model绑定到div
  • 好的,那我能做什么呢?
  • 您要创建分页吗?
  • 分享输出的 json 或者看看这个 [link](plnkr.co/edit/NqwW45ijaPqTaXDU21NP)
  • 没有@HJz。我已经创建了它。当实际值发生变化时,我只想更新一些角度变量。

标签: javascript angularjs angularjs-scope angularjs-ng-model


【解决方案1】:
app.controller('listController',function($scope,$http,PagerService,$timeout){

    $scope.list = {};
    $scope.pager = {};
    $scope.setPage = setPage;
    $scope.list = response;
    $scope.pageSize = "10";

    initController();

    function initController() {
        $scope.setPage(1);
    }

    function setPage(page,pageSize) {
        if (page < 1 || page > $scope.pager.totalPages) {
            return;
        }
        $scope.pager = PagerService.GetPager($scope.list.count, page,pageSize);
        if($scope.default != 1){

            var data = {"session_id":session_id, "offset":$scope.pager.startIndex, "limit":$scope.pager.pageSize};

            apiCall(data,"reportRoute.php?action=select&id="+id).then(function (res) {
 $timeout(function(){
  $scope.list.data = res.data.data;
  $scope.list.count = res.data.count;
  $scope.list.default = res.data.default;
  $scope.pager.startIndex = data.offset;
 $scope.pager.pageSize = data.limit;
 },0)


            });
        }

    }


    function apiCall(postData, postUrl){
        postUrl = 'https://example.com/routes/'+postUrl;
        //getData = {action:validate,id:id};
        return $http({
            method  : 'POST',
            url     : postUrl,
            data    : postData,
            headers : {'Content-Type': 'application/json'},
            //params  : getData
        })
    }

})

【讨论】:

  • 您分配给列表的响应包含什么?并在 UI 中显示寻呼机
  • 检查 list.count 值是否显示在 ui 中??
  • 计数显示在那里。但是页面 startIndex 和 endIndex 实际上并没有得到更新。
  • 是的,bz值为空,可以显示数据的值@SaMeEr
  • 检查一次@SaMeEr
猜你喜欢
  • 2012-09-19
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 2018-10-11
  • 2019-05-20
  • 1970-01-01
  • 1970-01-01
  • 2014-10-05
相关资源
最近更新 更多