gpt4 book ai didi

javascript - 更新 Controller 变量更改指令创建的元素

转载 作者:行者123 更新时间:2023-11-29 23:54:11 25 4
gpt4 key购买 nike

我正在尝试创建一个 Angular 应用程序,用户可以在其中创建动态表单。在此用户可以创建表单字段并保存表单元数据,然后用于显示实际表单。有实时预览,它使用指令创建元素。

由于我是 Angular 的新手,我无法弄清楚为什么绑定(bind)不起作用以及我需要进行哪些更改才能使其起作用。我在这里需要的是,一旦上述数据发生变化,实时预览部分就应该更新。比如说,我将类型从文本更改为密码,实时预览中的输入框应该变成密码类型。以下代码是主应用程序的片段。不幸的是,我无法更改 Angular 版本。

HTML

<form ng-submit="">
<div ng-repeat="tagfield in tagfields">
<dynamic-form dataobject="tagfield"></dynamic-form>
</div>
<button type="reset">Reset</button>
<button type="submit">Submit</button>
</form>

脚本

app.directive('dynamicForm', [ '$rootScope', function($rootScope){
return{
restrict: 'E',
scope: {
dataObject:'=dataobject'
},
link: function(scope, element, attrs){
element.append(
'Sample directive ' + scope.dataObject.selectmodel
+ '<input type='+scope.selectmodel+'
ng-model='+scope.dataObject.idmodel+'>'
);
}
}

}]);

plunker中的详细代码

https://embed.plnkr.co/7jBm9vxSx3y1hCCwjy1w/

最佳答案

请在 plunker 中尝试以下代码,如果有效请告诉我

app.directive('dynamicForm', [ '$compile', function($compile){
return{
restrict: 'E',
scope: {
dataObject:'=dataobject'
},
link: function(scope, element, attrs){

var el ="Sample directive <span>" + scope.dataObject.selectmodel
+ "</span><input type="+scope.dataObject.selectmodel+ "ng-value="+scope.dataObject.idmodel+"/>";
element.append(el);
scope.$watch('dataObject.selectmodel',function(newvalue,oldvalue){

if(oldvalue !=newvalue)
addelement(newvalue);
},true)

function addelement(valuedata)
{
element.children().remove()
var el ="Sample directive <span>" + scope.dataObject.selectmodel
+ "<span>"+"<input type='"+valuedata+ "'ng-value='"+scope.dataObject.idmodel+"'/>'";
element.append($compile(el)(scope));

}
}
}

}]);

关于javascript - 更新 Controller 变量更改指令创建的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42091799/

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