angularjs - 可以在选项元素中包含 ng-include 吗?

标签 angularjs

我正在尝试动态更改选择元素的选项模板。这是我想要做的,我有选择选项,这将允许用户选择他们在选择学生时想要查看的信息类型。如果用户选择“基本”,那么我只显示 Student 类的 Id 和 Name 属性。如果用户选择“详细信息”,则我会显示 ID、名称和等级。目前的实现是

<!DOCTYPE html>
<html ng-app>
<head>
    <title></title>
    <script type="text/ng-template" id="Basic">
        <select ng-model="selectedItem">
        <option ng-repeat="student in Students">
           {{student.Id}} - {{student.Name}}
        </option>
        </select>
    </script>
     <script type="text/ng-template" id="Detail">
        <select ng-model="selectedItem">
        <option ng-repeat="student in Students">
           {{student.Id}} - {{student.Name}} -- {{student.Grade}}
        </option>
        </select>
    </script>
</head>
    <body>
        <div ng-controller="TemplateCtrl">
            Details Level: <select ng-model="detailLevel" ng-options="c.Id for c in Details"></select>
            <div ng-include="detailLevel.Id"></div>
        </div>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js"></script>
        <script src="Scripts/TemplateCtrl.js"></script>
    </body>
</html>

如您所见,我正在复制 ng-template 'Basic' 和 'Detail' 中的代码。最初我正在尝试以下内容
<script type="text/ng-template" id="Basic">
           {{student.Id}} - {{student.Name}}
    </script>
<script type="text/ng-template" id="Detail">
           {{student.Id}} - {{student.Name}} -- {{student.Grade}}
    </script>

但是当我尝试在侧标签中执行 ng-include 时,浏览器不喜欢。我可能在这里遗漏了一些简单的东西,在这里创建重复的代码气味我做错了什么?
谢谢,

最佳答案

也许您可以尝试使用 ng-switch directive , 而不是模板。
那么以下应该工作:

<!DOCTYPE html>
<html ng-app>
<head>
    <title></title>
</head>
    <body>
        <div ng-controller="TemplateCtrl">
            Details Level: <select ng-model="detailLevel" ng-options="c.Id for c in Details"></select>
            <div ng-switch="detailLevel">
                <div ng-switch-when="Basic">
                    <select ng-model="selectedItem">
                        <option ng-repeat="student in Students">{{student.Id}} - {{student.Name}}</option>
                    </select>
                </div>
                <div ng-switch-when="Detail">
                    <select ng-model="selectedItem">
                        <option ng-repeat="student in Students">{{student.Id}} - {{student.Name}} -- {{student.Grade}}</option>
                    </select>
                </div>
            </div>
        </div>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js"></script>
        <script src="Scripts/TemplateCtrl.js"></script>
    </body>
</html>

关于angularjs - 可以在选项元素中包含 ng-include 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15869506/

相关文章:

javascript - 我需要 $http POST 状态代码 400,但得到 200

javascript - 如果条件不适用于状态,则 Angular

javascript - 无法将下拉选项设置为默认选择

javascript - Angularjs $http GET 方法更改为 OPTION,同时添加自定义 header

javascript - 从 Angular 'ng-model' 选择元素中选择第一个选项,并带有按钮

javascript - 表达式的 Angular 惰性一次性绑定(bind)

javascript - 为报价创建幻灯片

javascript - 使用ionic的angular js无限滚动问题

angularjs - 生产和开发需要哪些部分的 Node 模块?

AngularJS 动画基本 ng-repeat slider