Angular - 我的控制器不会更新视图中的组件数据

时间:2016-07-26 21:00:57

标签: angularjs controller components

所以,我的问题是:

我有一个使用过两次的组件,并且它定义了一个模板。

组件:

.component('topList', {
    template: '<div class="well"> \
                <div class="title"> \
                <h3>{{$ctrl.model.title}}</h3><a href="#" class="close"><i class="ss-delete"></i></a> \
                </div> \
                <div ng-repeat="i in $ctrl.model.items" class="list-question"> \
                <div class="item"><span class="number">{{$index + 1}}</span> \
                <div class="description"> \
                <h4>{{(i.Count/ $ctrl.model.total)*100 | number:2}}% ({{i.Count}} de {{ $ctrl.model.total }})</h4> \
                <p>{{i.Description}}</p> \
                </div> \
                </div> \
                </div> \
                </div>',
    controller: TopListController,
    bindings: {
        model: '='
    }
})

function TopListController() {

}

控制器:

    .controller('myController', function ($http, $scope, $controller, datesService) {
    var ctrl = this;

    $scope.api = function () {
            var date = datesService.getDates();
            $http.get("apicall/date.from/date.to").then(function (response) {
                ctrl.model = {
                    title: 'Title',
                    items: response.data.Items,
                    total: response.data.Total
                };
            });
    }

    $http.get("apicall/date1/date2").then(function (response) {
        ctrl.model = {
            title: 'Title',
            items: response.data.Items,
            total: response.data.Total
        };
    });
})

HTML(实际上是玉):

    div(ng-controller="myController as controller")
        top-list(model="controller.model")

当页面加载时,组件将填充来自$ http.get方法的数据,该方法在创建控制器时被调用,但是当我从html调用方法api()时,数据不会更改。

我从另一个控制器调用方法api()。

1 个答案:

答案 0 :(得分:0)

  1. 如果您使用提取的数据更新视图,则无需致电$scope.$apply();。你已经有使用双向数据绑定设置的观察者

  2. $http.get("apicall/date.from/date.to)
    

    应该是这个(你忘记了"

    $http.get("apicall/date.from/date.to")