我有一组自定义的指令,可以通过nav标签有效地构建可嵌套的导航菜单。以前,我对如何获取被包含的文本的内容有一些疑问。虽然我已经弄清楚了,但现在我想知道是否有任何方法可以删除已包含的元素,以便以后不会出现在模板中。使用This Plunker,您可以看到该元素正在获取被包含元素的文本。但是它仍然包含在ng-transclude
div中。
您将能够看到插塞程序中的代码,但是插塞程序中的相应代码段是:
//Other Code Here
controller:function($scope,$element,$attrs,$transclude){
this.parents = [];
var el = $transclude();
if(angular.equals($attrs.menuTitle, undefined)) {
$attrs.menuTitle= el.text().trim().split('\n')[0];
el.remove(); //Runs, still leaves the transcluded element
}
this.addSubmenu = function(parent){
this.parents.push(parent);
};
},
//Other Code Here
我对$transclude
价值的了解是微不足道的-我在这里工作的那部分只是经过大量的Google搜索和检查问题而偶然发现的。
感谢您提供的任何帮助。
您可以ng-transclude
使用以下$transclude
功能删除和手动进行转溶:
$transclude(function (clones) {
if ($attrs.menuTitle === undefined) {
$attrs.$set('menuTitle', clones.text().trim().split('\n')[0]);
}
var children = [];
angular.forEach(clones, function (el) {
// only transclude DOM node that you need here
if (el.nodeName === 'PARENT' || el.nodeName === 'CHILD') {
children.push(el);
}
})
$element.find('div').append(children);
});
柱塞示例: http ://plnkr.co/edit/jLvhzcX0uh1xQTTqtxXu?p=preview
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句