我有旧项目。在这一刻,我无法重写所有使用ng-view
和路由。所以我有大html
个文件和许多不可读的代码。
<div ng-if="f1">
<div>...</div>
</div>
<div ng-if="f2">
<div>...</div>
</div>
<div ng-if="f3">
<div>...</div>
</div> ....etc
我想将此代码分解为块并使用ng-include
来清除代码。但后来我会有很多这个标签(&gt; 10)。这是正常的吗?有没有办法以不同方式重新组织文件?
<div ng-if="f1" ng-include="url1"> </div>
<div ng-if="f2" ng-include="url2"> </div>
<div ng-if="f3" ng-include="url2"> </div>
答案 0 :(得分:3)
你应该将逻辑放在像这样的控制器中的数组
$scope.paths = [
{url : "url1" , condition: $scope.f1},
{url : "url2" , condition: $scope.f2},
{url : "url3" , condition: $scope.f3},
];
然后在像这样的HTML中使用它
<div ng-repeat="item in paths"> <div ng-if="item.condition" ng-include="item.url"></div> </div>
答案 1 :(得分:1)
您可以创建一个数组对象并在其上使用ng-repeat
。
<强> HTML 强>:
<div ng-repeat="template in templates">
<div ng-if="template.f" ng-include="template.url"> </div>
</div>
<强> JS 强>
//Array of objects that contain your checks and template urls
$scope.templates = [{
"url": value,
"f": value
}, {
"url": value,
"f": value
}, .....,
{
"url": value,
"f": value
}];
答案 2 :(得分:0)
使用ng-route是好的,但如果你不舒服的话 这是一个黑客。 像这样创建一个json数据:
$scope.myAllTemplate = [{
"isShown":false, "url":"/myTemplateURL1","templateName":"Template1"},{
"isShown":false, "url":"/myTemplateURL2","templateName":"Template2"},{
"isShown":false, "url":"/myTemplateURL3","templateName":"Template3"}
]
渲染模板名称,您必须通过点击事件切换ng-if
<div ng-repeat="item in myAllTemplate ">
<anyTag ng-click="changeTemplate(item)">item.templateName</anyTag>
</div>
控制器功能
$scope.changeTemplate = function(data){
data.isShown = true;
//here you can handle the template according to your wish
}
最后,渲染模板
<div ng-repeat="item in myAllTemplate ">
<div ng-if="item.isShown" ng-include="item.url"></div>
</div>