Ich habe meine erste Aufgabe bei der Abhängigkeit Injektion. Mein Ziel ist es, eventuell nur eine einfache Kommunikation zwischen zwei Controllern zu ermöglichen. Ich komme nicht einmal weit genug, um mich überhaupt um die Kommunikation mit dem zweiten Controller zu kümmern. Ich bekomme einen "ist kein Funktionsfehler" für ContactMessages.AddNewContact (response.data);Angularjs: Abhängigkeitsinjektion. "ist keine Funktion" Fehler
Wenn ich self.ContactMessages.AddNewContact (response.data) verwende; Ich bekomme "Kann nicht lesen Eigenschaft 'AddNewContact' von undefined"
Ich möchte nur die AddNewContact Funktion der Factory ContactMessages aufrufen.
Dies sollte ein ziemlich einfaches Verfahren sein.
<html ng-app="myApp"><head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script>
<script>
var userName = 'some email'; //pseudo code
var app = angular.module('myApp', []);
app.factory('ContactMessages', [function()
{ var tmpContact = {};
this.AddNewContact = function(objContact){
this.tmpContact = objContact;
};
return tmpContact;
}]);
app.controller('ActionsController', function ($scope, $http, ContactMessages){
this.newContact = {
Email: "",
Type: "",
Frequency: "",
UserName: userName
};
var self = this;
this.AddContact=function()
{
$http({
method: 'POST',
url: 'some url', //pseudo code
data: this.newContact,
headers: { 'Content-Type': 'application/x-www-form-urlencoded'}
}).then(function successCallback(response)
{ if(angular.isObject(response.data))
self.ContactMessages.AddNewContact(response.data);
}, function errorCallback(response) {
});
};
});
</script>
</head>
<body ng-controller="ActionsController as ActCtrl">
<div>
<form name="frmAddContact" noValidate>
<input placeholder="Contact Email" type="email" ng-model="ActCtrl.newContact.Email" required></input>
<select ng-model="ActCtrl.newContact.Type" required>
<option value="">Contact Type</option>
<option value="COLLEAGUE">Colleague</option>
<option value="FRIEND">Friend</option>
<option value="FAMILY">Family</option>
</select>
<select ng-model="ActCtrl.newContact.Frequency" required>
<option value="">Contact Frequency</option>
<option value="ANY">Any Time</option>
<option value="WEEKLY">Weekly</option>
<option value="MONTHLY">Monthly</option>
<option value="QUARTERLY">Quarterly</option>
<option value="YEARLY">Yearly</option>
</select>
<div >
<button ng-click="ActCtrl.AddContact()" ng-disabled="frmAddContact.$invalid" >Add Contact</button>
</div>
</form>
</div></body></html>
ich das Problem der Unfähigkeit ContactMessages.AddNewContact anrufen aus dem Inneren der $ http Anfrage isoliert haben. Ich kann diese Funktion innerhalb von AddContact aufrufen. –