gpt4 book ai didi

javascript - 在指令中使用链接函数附加不同​​的 HTML 元素

转载 作者:行者123 更新时间:2023-12-03 09:30:14 25 4
gpt4 key购买 nike

Fiddle

我有两个按钮。当按下时,它会显示一个带有一些文本的模式。但我还想根据按下的按钮动态添加一些 html。

我已经尝试了 $observe$watch 方法,但在使其工作时遇到问题。

这是我的代码。

angular.module('TM', [])

.controller('protocolCtrl', function(){
this.text = 'Now looking at the protocol part';
this.modalId = 'protocolModal';
})

.controller('categoryCtrl', function(){
this.text = 'Now looking at the category part';
this.modalId = "categoryModal";
})

.directive('modalDirective', function(){
return {
restrict: 'E',
scope: {
ctrl: '=',
modalId: '@',
},
template: ['<div id="{{modalId}}" class="modal fade" role="dialog">',
'<div class="modal-dialog">',
'<div class="modal-content">',
'<div class="modal-header">',
'<h4 class="modal-title">Modal Header</h4>',
'</div>',
'<div class="modal-body">',
'<p> {{ ctrl.text }} </p>',
'</div>',
'<div class="modal-footer">',
'<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>',
'</div>',
'</div>',
'</div>',
'</div>'].join(''),
link: function(scope, element, attrs) {
element.$observe('modalId', function(){
var modal = element.find('#{{modalId}}');
if(modal == 'protocolModal'){
element.find('#{{modalId}}').append('<div>this is a protocol test...</div>');
} else {
element.find('#{{modalId}}').append('<div>this is a category test...</div>');
}
});
}
}
});

最佳答案

我认为没有 element.$observe - 有 attrs.$observescope.$watch。您已经在范围上有了 modelId,所以让我们使用它。

此外,不要通过 id 来进行奇怪的 .find 操作,而是注入(inject)一个元素作为模板的占位符,并相应地 replaceWith :

template: '<div id="{{modalId}}">\
...\
<div class="modal-body">\
<template-placeholder></template-placeholder>\
</div>\
</div>",
link: function(scope, element){
// ...

var unwatch = scope.$watch("modalId", function(val){
var placeholder = element.find('template-placeholder');
if(val == 'protocolModal'){
placeholder.replaceWith('<div>this is a protocol test...</div>');
} else {
placeholder.replaceWith('<div>this is a category test...</div>');
}

unwatch(); // seems like you don't really need to set it again
}
}

关于javascript - 在指令中使用链接函数附加不同​​的 HTML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31532924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com