Eigentlich ist meine Anforderung, die eckige Fabrikmethode dynamisch zuzuweisen.Wie wird die eckige Fabrikmethode dynamisch zugewiesen?
Bitte schauen Sie diesen Code:
angular.forEach(scope.mapperData.collections.controltype.rowset, function (value, index) {
if (value.controltypeid == scope.controlId){
scope.controlData = value.controltypename;
controlContent = angular.element(layoutControlsFactory[scope.controlData]());
$compile(controlContent)(scope);
element.append(controlContent);
}
});
var controlContent = angular.element(layoutControlsFactory[scope.controlData]());
In dem obigen Code hat scope.controlData
. Der Wert wird dynamisch kommen. Ich brauche die wie
var controlContent = angular.element(layoutControlsFactory[ThirdPartyAutoComplete]());
Oder
var controlContent = angular.element(layoutControlsFactory.ThirdPartyAutoComplete());
layoutControlsFactory-Code
bosAppModule.factory("layoutControlsFactory",function($compile){
var layoutControlsFactory={};
layoutControlsFactory.ThirdPartyAutoComplete=function(controlId){
console.log("## Create ThirdPartyAutoComplete");
var template='<input kendo-auto-complete>';
return template;
};
return layoutControlsFactory;
});
Ich habe versucht zu vergeben, aber es zeigt Fehler.
typeError: layoutControlsFactory[scope.controlData] is not a function
Ich denke, ich habe meine Anforderung gut erklärt. Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen. Kann mir jemand dabei helfen?
was tut 'layoutControlsFactory' sieht aus wie und was ist der Wert von' scope.controlData'? Wenn sie entsprechende Daten haben, würde Ihre Syntax funktionieren [gut] (https://jsfiddle.net/jyonvcj4/) – Jamiec
@Jamiec - Jetzt habe ich layoutControlsFactory-Code hinzugefügt. Bitte schau. – bagya