Próbuję podnieść AngularJS z powrotem do ColdFusion i uruchamiam kilka blokad dróg. Modyfikuję ich aplikację "Do zrobienia" http://angularjs.org/ za pomocą bazy danych galerii sztuki CF. Próbuję połączyć CFC ColdFusion z aplikacją Angular, używając AJAX.CFC AngularJS i ColdFusion
Poniżej jest moje artists.cfc:
<cfcomponent>
<cffunction name="getArtists" access="remote" >
<cfargument name="firstName" default="">
<cfargument name="lastName" default="">
<cfquery name="getArtists_sql" datasource="cfartgallery">
SELECT
firstname as text,
lastname as done
FROM artists
WHERE 0=0
<cfif firstName neq "">
AND ucase(firstname) like ucase('%#FIRSTNAME#%')
</cfif>
<cfif lastName neq "">
OR ucase(lastname) like ucase('%#LASTNAME#%')
</cfif>
</cfquery>
<cfreturn getArtists_sql>
</cffunction>
</cfcomponent>
nazywam CFC za pomocą angularjs z następującego kodu:
function TodoCtrl($scope, $http) {
$http.get('cfc/artists.cfc?method=getArtists&returnformat=json').
success(function (response) {
$scope.todos = data.DATA;
}).
error(function (data) {
$scope.todos = data;
});
}
wiem, że dostanę odpowiedź z powrotem. Poniżej narzędzia programistyczne na ciąg JSON Chrome wraca do mnie:
{
"COLUMNS":
["TEXT","DONE"],
"DATA":[
["Aiden","Donolan"],
["Austin","Weber"],
["Elicia","Kim"],
["Jeff","Baclawski"],
["Lori","Johnson"],
["Maxwell","Wilson"],
["Paul","Trani"],
["Raquel","Young"],
["Viata","Trenton"],
["Diane","Demo"],
["Anthony","Kunovic"],
["Ellery","Buntel"],
["Emma","Buntel"],
["Taylor Webb","Frazier"],
["Mike","Nimer"]
]}
To nie wygląda jak notacji Kątowymi stosowanych w ich demo:
[
{text:'learn angular', done:true},
{text:'build an angular app', done:false}
]
Czy ktoś może wskazać mi w dobrym kierunku, aby jak mogę zrobić, żeby to działało poprawnie? Idealnie, chciałbym zachować nienaruszoną CFC, aby można ją było ponownie wykorzystać dla innej aplikacji, więc manipulacja JSON musiałaby zostać wykonana na końcu Javascript.
Czym dokładnie jest twoje pytanie? BTW, twój oddzwonienie sukcesu nie odwołuje się poprawnie do danych odpowiedzi. Powinien to być 'function (response) {$ scope.todos = response.data.DATA; } '. – Stewie
Jednoznacznie, moje pytanie brzmiałoby: "Jak zastąpić informacje z samouczka TODO AngularJS jednym z artist.cfc? Próbowałem funkcji (response) {$ scope.todos = response.data.DATA;} 'i otrzymuję' TypeError: Can not read property 'DATA' of undefined' – Chester
My bad, Myliłem jawną metodę "obietnica.success" (która podaje callback z danymi i parametrami statusu) z 'promise.then' metoda, która podaje callback (y) za pomocą obiektu odpowiedzi, który ma właściwość data, ale w takim przypadku callback powinien być 'function (data) {$ scope.todos = data.DATA;}' biorąc pod uwagę faktyczną odpowiedź ajax body naprawdę zwraca JSON, który umieściłeś w swojej odpowiedzi. – Stewie