Festlegen einer Eigenschaft des scope-Objekt dynamisch in Angular Js

Schreibe ich eine generische Methode, um Daten von einem service, und füllen Sie in die dynamische Eigenschaft Namen, die der Funktion übergeben. der Wert wird zugewiesen bekommt, um das Textfeld mit angular.element-Zuweisung, aber nicht aufgefüllt ruft in das Modell. im folgenden ist der code.

<div class="input-group">
<input class="form-control" id="ImgRollover" name="ImgRollover" ng-model="contentEntity.imgRollover" placeholder="" readonly="readonly" type="text">
<div class="input-group-btn">
    <button class="btn" type="button" ng-click="pickImage('contentEntity.imgRollover')">

    </button>
</div>

hier mein controller-Methode, die intern einen Dienst verwendet, welche sendet zurück-ein Versprechen

$scope.pickImage = function (attrModel) {
        ImageSelector.selectImage().then(
            function (value) {
                //angular.element("#" + attrModel).val(value);
                $scope[attrModel] = value;
        });
};

attrModel ist der name einer Eigenschaft in der scope-Objekt contentEntity aber der name der Eigenschaft ist NUR bekannt, dynamisch über die parameter der Methode.

  • ng_model - ist es Tippfehler? muss ng-model
  • keine Notwendigkeit, legen Sie den Wert mit val() wenn es gebunden ist, mit ng-model ( mit korrekter syntax)
  • Wählen Sie ein element durch id 'contentEntity.imgRollover", die nicht existiert
  • sorry, ng_model war ein Tippfehler. es ist das ng-Modell in den code.
  • und Ihr problem ist?
  • wenn Sie die ID ist die gleiche, das Teil funktioniert, aber die eigentliche Herausforderung ist, um den Wert zuzuweisen, um das Modell.
  • mein problem ist, dass das Modell Wert nicht aufgefüllt bekommt
  • weil Sie wahrscheinlich übergeben Sie eine Zeichenfolge 'contentEntity.imgRollover'.
  • versuchen Sie, die einfachen Anführungszeichen.
  • Sie kann nicht-Objekt-Wert obj['contentEntity.imgRollover'] verwenden Sie obj['contentEntity']['imgRollover'] statt
  • entfernen von einfachen Anführungszeichen nicht helfen 🙁
  • haben sollte, es sei denn, contentEntity ist nicht definiert oder imgRollover leer ist. haben Sie versucht, die Protokollierung attrModel.
  • ja, ich habe versucht zu tun, Protokollierung und er hat Wert
  • es arbeitet wie das $Bereich['contentEntity']['imgRollover'] = Wert; aber der wichtigste Punkt ist, übergeben Sie diese 2 Teile attrModel, also, wenn ich versuche, wie diese attrModel = ['contentEntity']['imgRollover']; $Bereich[attrModel] = Wert; es funktioniert nicht
  • so fügen Sie zwei params... pickImage('contentEntity', 'imgRollover')
  • siehe meine aktualisierte Antwort
  • haben Sie das schon gemacht und es hat wunderbar funktioniert 🙂 pls posten Sie Ihre Antwort in die Antwort, damit kann ich markieren Sie es als Antwort 🙂
  • Ihre bereits dort)
  • Ich schlug vor, etwas anderes, wenn Sie jemals brauchen werden, um die Verwendung einer unknow n Objekt Tiefe
  • das ist in der Tat sehr viel flexibler. vielen Dank für die Hilfe.

InformationsquelleAutor Vikram | 2014-09-08
Schreibe einen Kommentar