2017-02-22 77 views
0

我用NG-顯示顯示或隱藏導航。angularjs - NG-顯示不沃金

index.html中:

<div class="container" ng-show="vm.error" nav></div> 

在app.js

var siteApp = angular.module('siteApp', ['ngRoute']); 
siteApp.config(function($routeProvider) { 
$routeProvider 
    .when('/', { 
     controller: 'HomeController', 
     controllerAs: 'vm', 
     templateUrl: '/home.html' 
    }) 
    .when('/404', { 
     controller: 'ErrorController', 
     controllerAs: 'vm', 
     templateUrl: '/404.html' 
    }); 
}); 

在HomeController.js

siteApp.controller('HomeController', function(){ 
    var vm = this; 
    vm.error = false; 
    vm.message = "Halu home page";  
}); 

在ErrorController.js

siteApp.controller('ErrorController', function(){ 
    var vm = this; 
    vm.error = true; 
    vm.message = "Error 404"; 
}); 

雖然vm.message顯示爲真,但我的導航器隱藏在兩頁中。爲什麼? 你能幫助我在:https://github.com/ryantranvn/mean

+0

你有沒有在控制檯中的錯誤?你用'as'語法聲明瞭你的控制器嗎? – Derlin

+0

你可以用小提琴發佈你的問題嗎? – Nishant123

+0

嘗試直接在視圖中顯示「{{vm.error}}」。肯定它是未定義的。 – Mistalis

回答

1

由於this SO answer取代使用this$scope關於討論:

當使用這種風格,指示應在每個指令的文檔返回對象使用controllerAs屬性。

快速解決方法,你是,如果你想讓他們在視圖中可與$scope到前言變量名:

siteApp.controller('HomeController', function(){ 
    $scope.error = false; 
    $scope.message = "Halu home page";  
}); 

<div class="container" ng-show="error" nav>{{message}}</div> 

至於爲何文本被隱藏在這兩個測試用例,ng-show中使用的變量未定義。

+0

設置'$ scope.vm.error'直接將可能崩潰(如VM是不確定的),應該設置'$ scope.vm = {...}'而不是 – Matsemann

+0

@Matsemann它有助於在發佈前實際測試你的代碼: - ) –

+0

@Tim Biegeleisen,我試過使用變量vm而不是$ scope,但它仍然沒有woking。我在NG-演出中的變量存在是錯誤的,我可以打印(秀真/假) –

0

由於您使用的「本」的控制器功能,你將不得不宣佈與「爲」語法控制器。

如果使用路由控制器綁定,在路線

controller: "HomeController", 
controllerAs: "HomeCtrl" 

或者,如果你是直接用HTML寫NG-控制器,使用下面的代碼

<div ng-controller="HomeCtrl as HomeController"> 
    <div class="container" ng-show="HomeCtrl.error" nav></div> 
</div> 
0

添加div添加以下代碼在你的html中查看並顯示錯誤視圖

試試這個 在控制器

$scope.showError = false; 
$scope.Update = function() { 
     var servCall = ProjectSetting_Service.update(sub); 
     servCall.then(function (data) { 
      alert(JSON.stringify(data)); 
      }); 
    }, function (error) { 
    //alert message 

    $scope.showError = true;  
    } 

在HTML

<div ng-show="!showError "> 
    <p> Everything is going fine :)</p>  
</div> 
<div ng-show="showError "> 
    <p> 404 sorry</p> 
</div>