Tôi đang cố gắng để lấy AngularJS với một kết thúc Coldfusion và đang chạy vào một vài rào chắn. Tôi đang sửa đổi ứng dụng "To Do" của họ http://angularjs.org/ với cơ sở dữ liệu Thư viện ảnh nghệ thuật CF. Tôi đang cố gắng liên kết một ColdFusion CFC với một ứng dụng góc sử dụng AJAX.AngularJS và Coldfusion CFCs
Dưới đây là artists.cfc tôi:
<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>
tôi gọi là CFC sử dụng AngularJS với đoạn mã sau:
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;
});
}
Tôi biết rằng tôi nhận được một phản ứng trở lại. Dưới đây là các công cụ nhà phát triển Chuỗi JSON Chrome trả về cho tôi:
{
"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"]
]}
này không giống như các ký hiệu góc dùng cho thí nghiệm của họ:
[
{text:'learn angular', done:true},
{text:'build an angular app', done:false}
]
Ai đó có thể chỉ cho tôi đi đúng hướng để làm thế nào tôi có thể đi về việc này để làm việc đúng cách? Lý tưởng nhất, tôi muốn giữ nguyên CFC để có thể tái sử dụng cho một ứng dụng khác để thao tác JSON sẽ phải được thực hiện ở cuối Javascript.
Câu hỏi của bạn chính xác là gì? BTW, gọi lại thành công của bạn không tham chiếu chính xác dữ liệu phản hồi. Nó phải là 'hàm (response) {$ scope.todos = response.data.DATA; } '. – Stewie
Rõ ràng đã nêu, câu hỏi của tôi sẽ là "Làm cách nào để thay thế thông tin từ hướng dẫn TODO của AngularJS bằng hướng dẫn từ nghệ sĩ.cfc? Tôi đã thử hàm' (response) {$ scope.todos = response.data.DATA;} 'và tôi nhận được' TypeError: Không thể đọc thuộc tính 'DATA' của undefined' – Chester
Lỗi của tôi, tôi đã nhầm lẫn phương thức 'promise.success' rõ ràng (cung cấp gọi lại với các tham số trạng thái và dữ liệu) với' promise.then' phương thức này cung cấp các callback (s) với đối tượng response, trong đó có một thuộc tính data, nhưng trong trường hợp đó, callback của bạn phải là 'function (data) {$ scope.todos = data.DATA;}' cho rằng đáp ứng ajax thực tế của bạn cơ thể thực sự trả về JSON mà bạn đã đăng trong câu trả lời của bạn. – Stewie