Angular JS中的$ q问题

时间:2017-05-17 17:42:40

标签: javascript angularjs

我有一个面板可以在满足条件时显示。

<tab tabtitle="Servers ({{vm.dataServer}})" showtab="{{vm.dataServer != 0}}">
    <recommendationitem type="server"></recommendationitem>
</tab>

在我的组件onInit函数中,我正在做:

angular.module("myApp")
    .component("myrecommendation", {
        templateUrl: ".....",
        controllerAs: "vm",

        controller: ["$rootScope","$window","httpwrapper","$q", function($rootScope,$window,HttpWrapper,$q) {
            var vm = this;
            vm.tenant_id = '';
            vm.tenant_account_name = '';
            vm.$onInit = function() {

                vm.dataServer = 0;
                vm.dataNetwork = 0;
                vm.dataLoadBalancers = 0;

                promises = ..... //Setting promises here

                $q.all(promises).then(function() {
                    $window.localStorage.setItem('selectedServers',JSON.stringify(arr));
                    vm.loading = false;

                    var servers = [];
                if($window.localStorage.selectedServers !== undefined)
                    servers = JSON.parse($window.localStorage.selectedServers);

                vm.dataServer = servers.length;

                 ....
                 ....
}
vm.otherFunction = function(){
     ....
     ....
}
return vm;

虽然$qvm.dataServer设置为non-zero value,但我认为它没有反映出来。{/ p>

为什么?

更新

当我不使用promises which I need to use as part of requirement时,它会起作用。

vm.$onInit = function() {

                // var servers = [];
                // if($window.localStorage.selectedServers !== undefined)
                //     servers = JSON.parse($window.localStorage.selectedServers);
              // vm.dataServer = servers.length;  

                // vm.editName = false;

更新2

有趣的是,当我没有声明变量

            vm.$onInit = function() {

                //vm.dataServer = 0;
                //vm.dataNetwork = 0;
                //vm.dataLoadBalancers = 0;

它会显示标签但不会显示计数标题中的Server ()vm.dataServer需要打印{{1}}。我猜这里变得不明确。为什么这样?

0 个答案:

没有答案