我有一个AngularJS应用程序,我认为它基本上是非常典型的(类似于许多示例).
<html ng-app="myApp" ...
<body>
...
<div class="main" ng-view></div>
...
Run Code Online (Sandbox Code Playgroud)
有一个$routeProvider我设置了很多whens来引导用户到一个视图(模板部分与控制器),如:
$routeProvider.when('/incident/:identifier', {templateUrl:'incident.html', controller:"IncidentCtrl"});
Run Code Online (Sandbox Code Playgroud)
这一切都很好.用户可以在视图之间来回切换.
现在,让我们说我有一个"事件"的观点.它有一个具有"事件"属性的表单.(您可以更改表单中的值和"保存",这不是这里的要点.)我有以下要求:
对于在现有表单下面加载的表单,我想重用现有的模板部分及其后续控制器,我已经将其用于ng-view其他地方的顶层.但是我走了几条道路来实现这个无济于事; ng-include似乎不起作用,因为它非常静态,并且不允许嵌入式元素的大部分生命周期.此外,似乎很难动态加载它,这意味着它将在点击"添加工单"按钮之前加载.有人能指出我可行的策略吗?显然,我的目标是促进现有模板部分和控制器的重用,而不必总是让用户在视图之间移动.非常感激.
编辑:详细说明:我对目前ng-include为止所见过的任何想法都不满意,因为:
$routeParams从$routeProvider我会尽力解决你的问题 ng-include
如果我不仅仅有一种嵌入的视图,那么它们会有很多.他们都会在没有充分理由被展示之前得到装载; 矫枉过正
ng-if可以帮到你.在该条件成立之前,该指令不会加载DOM.当条件变为假时,它也会破坏DOM.所以像
<div ng-if='conditionwhenthepartialshouldbeshown'>
<ng-include src='templateName' ng-init='model=parent.someProperty'/>
</div>
Run Code Online (Sandbox Code Playgroud)
我不知道如何参数化嵌入视图的方式与我从$ routeProvider传递$ routeParams的方式相同
您可以ng-init在加载视图时用于传递一些参数.检查文档
我对父母和孩子范围之间过多的共享感到不舒服
ng-init可以再次帮到这里.您可以在子范围上创建属性,并将其传递给父范围值ng-init
我没办法干净地为后续的"添加"重新创建控制器
ng-if 这样做对你来说.
| 归档时间: |
|
| 查看次数: |
2689 次 |
| 最近记录: |