2017-02-24 28 views
0

生病尝试尽我所能来解释......麻烦连接器使用的路由在AngularJS

它似乎并不像我的控制器连接/工作正常。我不确定为什么,每次我检查我的语法似乎都是正确的。这里是我的路线声明:

angular.module('portfolio', ['ngRoute']).config(function ($routeProvider, $locationProvider) { 
    $routeProvider.when('/', { 
     templateUrl: '/public/app/views/main.html', 
     controller: 'MainCtrl', 
     controllerAs: 'main' 
    }).when('/about', { 
     templateUrl: '/public/app/views/about.html', 
     controller: 'AboutCtrl', 
     controllerAs: 'about' 
    }).when('/Resume', { 
     templateUrl: '/public/app/views/resume.html', 
     controller: 'ResumeCtrl', 
     controllerAs: 'Resume' 
    }).when('/Samples', { 
     templateUrl: '/public/app/views/samples.html', 
     controller: 'SamplesCtrl', 
     controllerAs: 'Samples' 
    }).otherwise({ 
     redirectTo: '/' 
    }); 
    $locationProvider.html5Mode(false).hashPrefix(''); 
}); 

只是作为一个例子,这里是我的简历的看法:

<paper-button ng-click="changeEx()" raised>Experience</paper-button> 
<paper-button ng-click="changeSkills()" raised>Skills</paper-button> 
<paper-button ng-click="changeEdu()" raised>Education</paper-button> 
<paper-button ng-click="changeMisc()" raised>Misc.</paper-button> 
<div ng-hide="exp"> 
    <p>Experience</p> 
</div> 
<div ng-show="skills"> 
    <p>Skills</p> 
</div> 
<div ng-show="education"> 
    <p>Education</p> 
</div> 
<div ng-show="misc"> 
    <p>Misc.</p> 
</div> 

最后,这里是控制器的简历观点的声明:

angular.module('portfolio', []).controller('ResumeCtrl', function() { 
    this.exp = true; 
}); 

显然,这个控制器是不完整的,但我只是试图通过使用这个变量来测试它。

+1

删除控制器声明中的括号,否则重新定义t他组合应用程序。所以:'angular.module('portfolio')。controller ...' – sh0ber

+0

你也没有描述你遇到的问题。 “不工作”并没有给我们很多提示。请明确点。什么不起作用? –

+0

对不起,我应该更具体。该div没有隐藏。视图切换工作正常,但控制器从未见过应用。我试图删除支架,并使用$范围和你的其他建议,但我仍然有同样的问题。是否因为我正在测试括号?我不得不离开,但将在稍后发布页面的火灾基础副本,也许这将有助于 – Perkis

回答

1

当您引用已声明的模块时,请勿使用方括号。这是由角解释为,宣布一个新的模块:

angular.module('portfolio').controller('ResumeCtrl', function() { 
    this.exp = true; 
}); 

我会检查接下来的事情是你的主要HTML页面。你什么地方有这个指令您的网页上:

<div ng-view></div> 

另一个问题是,你在你的路线声明controllerAsResume,但使用的是this.exp分配您的变量,也试图在视图中引用exp。您需要按照这个模式来替代,或者使用$scope

angular.module('portfolio').controller('ResumeCtrl', function() { 
    var Resume = this; 
    Resume.exp = true; 
}); 

而且在你看来,你应该用你controllerAs定义相同名称引用该变量:

<div ng-hide="Resume.exp"> 
    <p>Experience</p> 
</div> 

,或者,你可以保持您的观点相同,但使用$scope来分配变量:

​​
+0

再次感谢,即使在采取您的建议后,我似乎仍然有同样的问题。 divs似乎没有回应像ng-show这样的指令。最重要的是,firebase似乎不想部署我的视图或控制器目录,所以我不能向您展示。 – Perkis