2017-05-11 36 views
0

我刚刚学习Angular并设置了一个非常基本的应用程序。当通过路径的templateUrl属性渲染某些数据时,在返回的模板中包含子控制器的最佳方式是什么?例如,在“viewItem”模板的底部包含一个“createOrEditItem”模板,以便“createOrEditItem”可以在以后自己重用?自动实例化嵌套在templateUrl中的AngularJS控制器

我试过在模板中放置一个div,它的ng-controller属性设置为我在应用程序级别定义的控制器名称,但它未被激活。这应该通过一个指令来完成,而不是在主控制器设置其内容时实例化,还是我缺少更基础的东西?

+0

'通过控制器的templateUrl属性? AFAIK,控制器没有templateUrls .. – tanmay

+0

也许你正在寻找一个嵌套的指令类的东西..检查[这个plunker](http://embed.plnkr.co/mUXCd7/)为基本的例子 – tanmay

+0

谢谢 - 我的意思是路由不是控制器,并编辑了这个问题! – tags2k

回答

1

是,在问题的后面部分提到,你应该使用directive。或者,如果使用AngularJS> = v1.5,component应该是选择,因为它们是可插入的,并且与嵌套配合也很好。

注意的路线也可以直接使用component这样的:

var myMod = angular.module('myMod', ['ngRoute']); 
myMod.component('home', { 
    template: '<h1>Home</h1><p>Hello, {{ $ctrl.user.name }} !</p>', 
    //     ^^^^ other components can be used here 
    controller: function() { 
    this.user = {name: 'world'}; 
    } 
}); 

myMod.config(function($routeProvider) { 
    $routeProvider.when('/', { 
    template: '<home></home>' 
    }); 
}); 

现在,作为意见建议,您可以自由使用其他组件home组件的模板。

希望这会有所帮助!

+0

这绝对是我想要的!组件看起来像是前进的方向。与控制器和大量的重用最小的烦恼? – tags2k

+0

@ tags2k正确!而且,即使从前向兼容性(与Angular2和4)的角度来看,组件也是可行的!很高兴有一点帮助.. – tanmay

相关问题