2015-05-06 4 views
1

Программа предназначена для того, чтобы сделать сумму, чтобы научиться работать с угловыми, выраженными и nodejs.AngularJS, NodeJs и ExpressJS

Моя библиотека:

angular.js угловой route.js

Я пытаюсь запустить этот код, но я geeting эту ошибку:

Uncaught TypeError: url.match is not a function (13:04:31:527 | error, javascript) 
    at completeRequest (public_html/js/libs/angular.js/angular.js:10437:27) 
    at xhr.onreadystatechange    (public_html/js/libs/angular.js/angular.js:10404:11) 

Мой HTML является:

<head> 
    <title>TODO supply a title</title> 
    <meta charset="UTF-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 

    <script src="js/libs/angular.js/angular-resource.js" type="text/javascript"></script> 
    <script src="js/libs/angular.js/angular-route.js" type="text/javascript"></script> 
    <script src="script.js" type="text/javascript"></script> 

</head> 
<body ng-controller="AppCtrl" > 

    <form > 
     <input type="text" ng-model="url" size="80" aria-label="URL" /> 
     <br> 
     <br>   Parameter 1: 
     <input type="text" ng-model="param1"> 
     <br> 
     <br> 
     Parameter 2: 
     <input type="text" ng-model="param2"> 
    </form> 
    <br> 
    <br> 
    <button id="samplegetbtn" ng-click="click('http://localhost:8000/calc/param1/:param1/param2/:param2')">Sample GET</button> 
    <br> 
    <div >Sum: {{data}}</div> 
    <br> 
</body> 

Моя сторона Сервер:

var url = require('url'); 
//Require express, 
var express = require('express'); 
//and create an app 
var app = express(); 

//app.get() which represents the HTTP GET method 
app.get('/', function (req, res) { 

    res.send('Hello World!'); 

}); 

//app.get() which represents the HTTP GET method 
app.get('http://localhost:8000/calc/param1/:param1/param2/:param2', function (req, res) { 

var a = parseInt(req.params.param1); 
    console.log(a); 
    var b = parseInt(req.params.param2); 
    console.log(b); 


var output = a + b; 
    console.log(output); 
    res.sendStatus(output); 

}); 



var server = app.listen(8000, function() { 

    var host = server.address().address; 
    var port = server.address().port; 

    console.log('Example app listening at http://' + host + ':' + port); 

}); 

Мой сценарий с AngularJS:

(function(angular) { 
'use strict'; 
angular.module('myCalc', ['ngRoute']) 



.controller('AppCtrl', function($scope, $http, $templateCache) { 
    $scope.click = function(url) { 
    $scope.url = url; 
    var param1 = $scope.param1; 
    var param2 = $scope.param2; 

$http.get({ url: $scope.url, param1: $scope.param1, param2: $scope.param2, cache: $templateCache}). 
// $http.get({ url: $scope.url, cache: $templateCache}). 
     success(function(data) { 
     $scope.data = data; 
     }). 
     error(function(data) { 
     $scope.data = data || "Request failed"; 
     }); 

    }; 

}) 


.config(function($routeProvider, $locationProvider) { 
    $routeProvider 
    .when('http://localhost:8000/calc/param1/:param1/param2/:param2', { 
    templateUrl: 'index.html', 
    controller: 'AppCtrl' 


    // configure html5 to get links working on jsfiddle 
    $locationProvider.html5Mode(true); 
}); 
})(window.angular); 

ответ

0

Вы передаете как url & params в неправильном направлении для $http.get

$http.get(url, {configjson})

AS its 1st parameter is url & 2nd one is for configuration

Код

$http.get($scope.url, { 
    params: { 
     param1: $scope.param1, 
     param2: $scope.param2 
    }, 
    cache: $templateCache 
}). 
success(function(data) { 
    $scope.data = data; 
}). 
error(function(data) { 
    $scope.data = data || "Request failed"; 
}); 
+0

Привет pankajparkar Спасибо так много людей. Ты прав!! Вы очень помогли с этим объяснением! –

+0

@RodrigoNM не могли бы вы отметить этот ответ как правильный :) –

Смежные вопросы