将多个变量传递给 Angular JS 指令
Passing more than one variable to Angular JS directive
我是编写指令的新手。 我有这段有效的代码,我正在尝试使其成为指令:
<div ng-click="details=!details" class="row toggleHeader" ng-class="{open : details}">
<div class="col-md-12">
<h4>Some title</h4>
</div>
</div>
<div id="the-details" class="row" ng-show="details">
<div class="col-md-2">
...content...
</div>
</div>
所以,我最初的通行证是
app.directive('pbTogglePanel', function() {
return {
restrict: 'A',
scope: {
variableName: '@',
panelTitle: '@'
},
template: '<div ng-click="somevariable=!somevariable" class="row toggleHeader" ng-class="{open : somevariable}">'n<div class="col-md-12">'n<h4>{{panelTitle}}</h4>'n</div>'n</div>'n'n<div id="the-somevariable" class="row" ng-show="somevariable">'n<div class="col-md-2">'n...'n</div>'n</div>',
};
});
与 HTML
<div pb-toggle-panel panel-title="My Directive Panel Test" variable-name="foobar"></div>
从某种意义上说,这是有效的,即面板按预期切换。 我显然没有尝试使用从 html 属性传递的变量"foobar"。 当我尝试使用它时,代码抛出错误并且切换不起作用。我尝试使用模板:
'<div ng-click="{{variableName}}=!{{variableName}}" class="row toggleHeader" ng-class="{open : {{variableName}}}">'n<div class="col-md-12">'n<h4>{{panelTitle}}</h4>'n</div>'n</div>'n'n<div id="the-{{variableName}}" class="row" ng-show="{{variableName}}">'n<div class="col-md-2">'n...'n</div>'n</div>'
尽管"foobar"出现在所有这些位置,但切换失败,控制台记录角度错误。
那么,拉入多个 html 属性的正确方法是什么?
此外,目标是允许此 DIV 的内容替换模板中的...content...
占位符。也不知道如何通过。
我觉得如果我能弄清楚这些数据是如何传递的,我就会从那里开始很好。
帮助澄清这有效:http://codepen.io/smlombardi/pen/MYygpy
但是我也想传递变量的名称供切换器从属性中使用,但这不起作用:http://codepen.io/smlombardi/pen/KwzPaw
最后一个非工作示例的问题不是传递多个参数,而是滥用角度的插值机制。如果您只想使用 variableName
,则使上一个代码示例工作(即折叠/展开(的最小更改是将模板从字符串更改为带有串联的函数:
{...
template: function(tElem, tAttr){return '<div ng-click="' + tAttr.variableName + '=!' + tAttr.variableName +...;
}
但是,只要您使用指令隔离作用域,就没有必要这样做,这实际上向您隐藏了variableName
的值。您可能还希望更改为 scope:false
并从模板函数的tAttr
获取属性。修改后的示例。
相关文章:
- Angular JS IE9 Hashbang url rewriting
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- angular.js没有'无法在PhoneGap中处理视图标记
- Angular js-返回一个包含类似
- 如何使用 Angular JS 将数据保存在数据库中
- 将Angular js与taglib结合使用
- Angular JS Filter-通过3个复选框进行筛选
- vaadin:使用自定义布局集成angular js
- angular js密码强度显示问题
- 使用angular.js问题的JavaSpringREST服务
- 将复杂对象从angular js传递到web api,它总是返回404
- entre上的angular js阻止提交
- 根据Angular.JS上一次的内容禁用选择
- 如何在angular js中使用指令.不适用于我的情况,为什么
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- angular.js:13424错误:[ng:areq]参数'fn'不是函数,getObject
- 使用Angular js-量角器e2e测试上传文件
- Angular.js延迟控制器初始化
- 如何在angular.js中动态应用自定义过滤器
- 谷歌地图/Angular JS:地图更新并不总是反映数据,并且可以't删除标记