2015-04-02 92 views
1

我有一个问题,我将继续解释。当在HTML页面的这种类似这样的顶部使用ControllerAS:Angular - 在路由中使用ControllerAs的多个控制器

<div ng-controller="MyController as myControllerVM"> 

可以参考我的东西在使用myControllerVM名字我的控制器。

即在我的控制器我成立了一个变量这一点,并分配其他变量是这样的:

var vm = this; 
vm.number = 1; 

然后我就可以参考这个变量在HTML这样的:

myControllerVM.number 

只要在我的页面顶部我有

<div ng-controller="MyController as myControllerVM"> 

我想要做的是完成相同的事情通过路由。我曾经尝试这样做:

.when(myROUTE, { 
      templateUrl: 'template.html', 
      controller: 'MyController', 
      controllerAs: 'myControllerVM' 

和分配一切都在控制器变量vm其作为前指向this。但在我的HTML页面中,这些值并没有像HTML页面顶部的“控制器名称”那样被拉过,也就是说,我不能再引用HTML中的值myControllerVM.name(值为' t被拉过)。我在路由中需要它的原因是因为我想为一个html页面使用不同的控制器。

为什么在路线工作中不使用controllerAs

+0

你可以在这种情况下发布template.html? – 2015-04-02 14:16:48

+0

它应该工作。您可能还有其他问题,您还没有发布 – 2015-04-02 14:27:05

回答

1

我不能看到所有的代码,但是你可以找到工作的例子在这里

http://plnkr.co/edit/aedTeP2DbicGYwdGWKvU?p=preview

即:

myApp.config(function($stateProvider, $urlRouterProvider) { 
    // 
    // For any unmatched url, redirect to /state1 
    $urlRouterProvider.otherwise("/state1"); 
    // 
    // Now set up the states 
    $stateProvider 
    .state('state1', { 
     url: "/state1", 
     templateUrl: "state1.html", 
     controller: 'state1Ctrl', 
     controllerAs:'vm' 
    }) 

    .state('state2', { 
     url: "/state2/", 
     templateUrl: "state2.html", 
     controller: 'state2Ctrl', 
     controllerAs:'vm' 



    }); 
}); 

myApp.controller('state2Ctrl', function(){ 
    var vm = this; 
    vm.title= "That is my second" 

}); 

myApp.controller('state1Ctrl', function($scope){ 
    var vm = this; 
    vm.title= "fist controller"; 


}); 
+0

对不起,对于迟到的回复,我很欣赏这两个答复给出了很大。你的例子告诉我,我做的事情非常愚蠢,并有一个我根本看不到的小错字。我想我正在看屏幕上很长很长时间才看到它。你的工作榜样很出色,我希望它能帮助像我这样的人。非常感谢你。 – J145 2015-04-03 20:00:13

1

你做的一切正确的与

.when(myROUTE, { 
      templateUrl: 'template.html', 
      controller: 'MyController', 
      controllerAs: 'myControllerVM' 

我不确定Angular文档是否足够清晰,但是r的范围外围的当前控制器是ngView的范围。因此,您只能使用MyController范围变量(包括使用myControllerVM标识符的范围变量)或ngView元素属性。我想这是问题的根源。