我正在学习Angular并设置了一个非常基本的应用程序。通过路径的templateUrl属性渲染一些数据时,在返回的模板中包含子控制器的最佳方法是什么?例如,包括" createOrEditItem" " viewItem"底部的模板模板使" createOrEditItem"可以在以后重复使用吗?
我已经尝试在模板中添加div
,并将ng-controller
属性设置为我在应用级别定义的控制器名称,但是它已经定义了没有被激活。这应该用一个指令来完成,以便在主控制器设置了内容时使其实例化,或者我是否遗漏了一些更基本的东西?
答案 0 :(得分: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
组件的模板中自由使用其他组件。
希望这有点帮助!
答案 1 :(得分:0)
可以使用指令。
另一种选择是使用单独的视图/路线。因此,当您添加ui-view标记时,您可以定义视图和路径。
这里解释如下: https://scotch.io/tutorials/angular-routing-using-ui-router