自动实例化嵌套在templateUrl

时间:2017-05-11 13:12:05

标签: angularjs

我正在学习Angular并设置了一个非常基本的应用程序。通过路径的templateUrl属性渲染一些数据时,在返回的模板中包含子控制器的最佳方法是什么?例如,包括" createOrEditItem" " viewItem"底部的模板模板使" createOrEditItem"可以在以后重复使用吗?

我已经尝试在模板中添加div,并将ng-controller属性设置为我在应用级别定义的控制器名称,但是它已经定义了没有被激活。这应该用一个指令来完成,以便在主控制器设置了内容时使其实例化,或者我是否遗漏了一些更基本的东西?

2 个答案:

答案 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