AngularJs指令,显示模板
AngularJs directive, show template
我有div,它根据服务器数据动态生成。所有这些div都有它们的keyboard
值:numpad
或fullkeyboard
(基于服务器数据)。例如:
[
{
label: 'NICK NAME',
keyboard: 'fullKeyboard'
},
{
label: 'AGE',
keyboard: 'numpad'
}
]
我有两个键盘的模板。
我希望,当用户点击这些div时,显示正确的键盘模板。
怎么可能呢?
我的HTML:
<div id="container-of-inputDivs">
<div ng-repeat="(key, item) in dataSource" data-keyboard="item.keyboard"></div>
</div>
<keyboard />
你的键盘指令必须有一些scope属性,比如:
<div keyboard="activeKeyboard"></div>
然后,您的div可能是这样的(假设dataSource
是您在问题中提供的数组):
<div id="container-of-inputDivs">
<div ng-repeat="item in dataSource" ng-click="activeKeyboard=item">
</div>
这样,当您单击div时,activeKeyboard
将被设置为item
,它存储在作用域上的变量activeKeyboard
中。
根据您的指令,您可以返回如下内容:
{
template: 'your-template-here',
scope: {
keyboard: '='
},
...
}
您可以使用双向绑定来隔离作用域。现在,您可以在模板中使用隔离的键盘对象。
编辑:关于如何使用IT-的示例
从这里开始还有很多路要走。这里有两个例子:
1) 在模板中包含动态代码
{
template: '<div>{{keyboard.label}}</div>',
scope: {
keyboard: '='
},
...
}
2) 基于范围的不同模板
假设根据键盘的作用域,您有两个不同的模板要包含:/templates/fullKeyboard.html
和/templates/numpad.html
。
{
template: '<div ng-include="getTemplateUrl()"></div>',
scope: {
keyboard: '='
},
controller: function($scope) {
$scope.getTemplateUrl = function() {
return '/templates/' + $scope.keyboard.keyboard + '.html';
}
}
}
正如我所说,有很多方法可以做到这一点,这取决于你的架构和你想要实现的目标。
您可以使用ng-include,然后根据键盘变量返回正确的html模板。
例如:
vm.GetKeyboardTemplate = function(keyboard){return keyboard + ".html";}
<div ng-include="{{vm.GetKeyboardTemplate(item.keyboard);}}"></div>
相关文章:
- AngularJs|Don'在成功加载所有指令htmls之前,不显示页面
- 显示/隐藏有关模型更改的指令内容
- 指令未以角度显示
- 显示指令时调用指令方法
- 如何在html中以角度显示自定义指令的作用域
- 一次显示一个隐藏指令-AngularJS
- 一次显示一个指令AngularJS
- 如何在 AngularJS 中创建和显示多个自定义指令
- 指令中的数据未在ng重复中显示
- 角度指令未显示
- AngularJS指令模板不显示HTML
- AngularJS自定义指令ng显示/ng隐藏
- 日期-时间范围指令字段未显示任何值
- Angularjs-将指令中的值绑定到文档中的任意位置显示/隐藏
- Angular.js自定义指令未多次显示
- AngularJS指令未显示
- AngularJS指令未显示在模板上
- 如何在当前元素之外显示指令
- 如何在带角度传单的Marker Popup指令中显示指令
- ng显示指令更改相关作用域值后不更新