zu erhalten Ich versuche, eine Direktive zu erstellen, die durch ein Array von Kreditor-Objekten iteriert, jeder Anbieter verfügt über eine Kommentar-Array-Eigenschaft. Ich wollte einen Textbereich in der Direktive hinzufügen, die das Kommentar-Array in der Link-Methode der Direktive füllen würde. Ich war nicht in der Lage, den Wert von Textbereich zu bekommen, was mache ich falschNicht in der Lage, den Wert in Direktive
meinen Controller >>
.controller("VendorController",function($scope){
$scope.vendors = [
{
id : 1,
name : "foo",
comments:[]
},
{
id : 2,
name : "boo",
comments:[]
}
]
})
meine Richtlinie >>
.directive('vendorInterests',function(){
return{
restrict:'E',
replace: true,
scope: {
vendors: "=",
comment :"="
},
,
template:"<div>"+
"<div ng-repeat='vendor in vendors'><div>{{vendor.name}}"+
"</div>"+
"<div ng-repeat='comment in vendor.comments'>{{comment}}</div>"+
" <textarea rows='5' ng-model='comment'></textarea>"+
" <button ng-click='addComment(vendor)'>Add Comment</button>"+
"</div>",
link:function(scope, elem, attrs){
scope.addComment=function(vendor){
//scope.comment is coming empty, how do i pass the comment into
//this method and update the view
console.log(scope.comment);
//console.log(cntrl.$viewValue.comment);
vendor.comments.push(scope.comment);
}
}
}
});
meine html >>
<body ng-app="dealApp">
<div ng-controller="VendorController">
<vendor-interests vendors="vendors"></vendor-interests>
</div>
</body>
Bitte finden Sie den Plotter here
Dies passiert, weil die 'ng-repeat' einen inneren Bereich erstellt hat, die Vererbungsproblemen unterliegt (** immer ** Verwenden Sie einen Punkt in 'ng-Modell' - http://stackoverflow.com/questions/14049480/what-are-the-nuances-of-scope-prototypal-prototypical-inheritance-in-angularjs). In diesem Fall benötigen Sie ein Objekt außerhalb der 'ng-repeat', das den Wert halten kann, was wahrscheinlich einfacher ist, wenn Sie einen Controller anstelle einer Verknüpfung verwenden. – Claies