2

我是 AngularJS 的新手,我正面临与视图相关的问题。我有这种模型(伪代码)

class Contract{
  int IdContract;
  int Title;
  int IdPerson;
}

class Person{
  int IdPerson;
  string FirstName;
 string LastName;
}

现在,我应该有一个与这条路线 myapp/contract/edit 匹配的视图 contractEdit.html。在该视图中,应该有某种嵌套视图来显示链接到我正在编辑的合同的人员详细信息。我应该如何使用 Angular 做到这一点?我对视图和指令感到困惑......它应该是指令吗?

任何帮助将非常感激

4

2 回答 2

2

有多种方法可以解决这个问题。

首先很简单,也很脏,使用ng-include. 例如,创建一个名为的模板文件PersontTmpl.html

<div>
  {{person.firstName }} {{person.lastName}}
</div>

现在,每当您需要显示一个人时,请确保person范围内有一个对象,并添加以下行:

<ng-include src="'somepathToTemplate/PersonTmpl.html'"></ng-include>

好吧,这是一个肮脏的解决方案,因为您将始终必须将 person 暴露在同名范围内。

第二种方法是创建一个指令:

angular.module('nameofyourmodule')
  .directive('person', function () {
    return {
      templateUrl: 'somepathToTemplate/PersonTmpl.html',
      restrict: 'AE',
      scope:{person:"="}
    };
  });

现在,当您想显示“currentPerson”时,您必须在其他模板/视图中执行以下操作:

 <div person='currentPerson' />

此调用将显示使用“currentPerson”对象初始化的人员模板。

要真正了解指令的工作原理,我建议观看Writing Directives (by Misko Hevery)演示,或尝试阅读官方文档

于 2013-04-13T02:10:47.557 回答
0

它不应该是指令性的。

您考虑嵌套视图和您的权利。目前 AngularJS 不支持嵌套视图,但是有一个Router项目支持

如果您不想走那么远,请坚持观点。

于 2013-04-11T21:39:31.297 回答