ng-repeat不更新数组

时间:2016-07-18 11:13:27

标签: angularjs angularjs-ng-repeat ng-repeat

我在" hostController"中的表格中显示主机列表控制器。 ClusterController是hostController的父级。主机是群集视图中的选项卡。只有在群集列表可用时才会调用获取主机(在单击群集视图的下拉列表时调用该列表)。因此,即使我们选择了主机选项卡,也不应触发主机列表调用,因此不应显示主机列表(因为群集列表不可用)。但是,如果我们选择了主机选项卡,然后单击群集视图的下拉列表以获取群集列表,则应显示主机列表。但它没有发生这样的事情。主机列表会更新,但UI中不会显示相同的更改。

Cluster视图中的下拉列表将调用getClusterList()并更新showNavContent属性。仅当showNavContent属性为true时,才应显示主机列表。我正在clusterController中再次编译hostController,因此函数getHostList被调用并更新了hostVm.hostList属性,但在UI上却没有反映出来。

//ClusterController

function clusterController($scope, $controller, $rootScope) {

    var vm = this,
        hostVm;

    $rootScope.showNavContent = false;

    function getClusterList() {
        clusterStore.getClusterList().then(function(data) {

            $rootScope.showNavContent = true;
            hostVm = $controller("hostController as hostVm", { $scope: $scope});                
        });
    };


//HostController 

app.controller("hostController", hostController);

  function hostController($scope, $rootScope, $state, $stateParams, hostStore, tabManager) {

    var vm = this;

    vm.getHostList = getHostList;
    vm.activeTab = tabManager.getActiveTab();
    vm.hostList = [];

    init();

    function getHostList() {
        hostStore.getHostList().then(function(data) {
            vm.hostList = data.data;

            console.log(vm.hostList);
        });
    }

    function init() {
        if($rootScope.showNavContent === true) {
            vm.getHostList();
        }            
    }
}

 //host.html
 <div class="flex-table">
        <div class="ft-row" ng-repeat="host in hostVm.hostList">
            <div class="ft-column">
                <div class="host-name">{{host.name}}</div>
                <div>{{host.ip}}</div>
            </div>
         </div>
 </div>

0 个答案:

没有答案