ReferenceError: jurusan не определен в Angular с Nodejs

Я новичок в этом и пробуя AngularJS и NodeJS, я застрял в этой ошибке.

Я пытаюсь сделать опцию динамического выбора, я пытаюсь отобразить таблицу из базы данных MySQL с помощью NodeJS и передать данные в Angular. Я много пробовал решить эту проблему, но, возможно, я все еще не совсем понимаю angular, поэтому я еще не решил проблему.

Я использую nodeJS ver. 1.0.0 и AngularJS версии 1.7.5. Вот мой код:

controlAll.js

var http = require('http');
var qs = require('querystring');
var fs = require('fs');
var hbs = require('hbs');
var express = require('express');
var bodyParser = require('body-parser');
var route = express();
var mysql = require('mysql');

var konek = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "",
    database: "mahasiswa",
});
konek.connect(function(err){
    if (err) throw err;
    console.info("udah konek");
});

route.set('view engine', 'hbs');
route.use(bodyParser.json());
route.use(bodyParser.urlencoded({ extended: true }));

route.get('/mahasiswa/add', function(req, res){
    res.render("formm");
});
route.get('/jurusan', function(req,res){
    konek.query("SELECT * FROM `jurusan`",function(err,jurusan)
    {
        if (err) throw err;
        res.send(JSON.stringify({
            jurusan:jurusan
        }));
    });
});

formm.hbs

<!DOCTYPE html>
<html>
<head>
    <title>tambah mahasiswa</title>
    <link rel = "stylesheet" href = "/asset/css/bootstrap.min.css">
    <script src = "/asset/js/bootstrap.min.js"></script>
    <script type = "text/javascript" src = "/ang/angular.js"></script>
</head>
<body ng-app = "coba">
    <div class = "container">
        <form method = "POST" action = "/mahasiswa/add">
            <div class = "form-group">
                <label>Nama Mahasiswa</label>
                <input type = "text" name = "nama" placeholder = "nama" class = "form-control">
            </div>
            <div class = "form-group">
                <label>Nomor Pokok Mahasiswa</label>
                <input type = "text" name = "npm" placeholder = "npm" class = "form-control">
            </div>
            <div ng-controller = "drpdn">
                <div class = "form-group">
                    <label>Jurusan</label>
                    <select name = "id_jurusan" ng-model = "jurusan" class = "form-control">
                        <option disabled selected value>--Pilih Jurusan--</option>
                        <option ng-repeat = "jur in jurusan" value = "{{jur.id_jurusan}}">{{jur.namajurusan}}</option>
                    </select>
                </div>
                <div class = "form-group">
                    <label>Program Studi</label>
                    <select name = "id_prodi" class = "form-control">
                        <option disabled selected value>--Pilih Program Studi--</option>
                    </select>
                </div>
            </div>
            <button type = "submit" class = "btn btn-primary">simpan</button>
        </form>
    </div>
</body>
</html>

<script type = "text/javascript">
    var app = angular.module('coba',[]);
app.controller('drpdn', function($scope, $http){
       $http.get("/jurusan")  
       .then(function(response){
            $scope.jurusan = response.jurusan;
       });
  console.info($scope.jurusan);
});
</script>

Мой ответ nodejs, я помещаю массив в другой маршрут:

ReferenceError: jurusan не определен в Angular с Nodejs

console.info($scope.jurusan)

ReferenceError: jurusan не определен в Angular с Nodejs

И вот моя ошибка:

ReferenceError: jurusan не определен в Angular с Nodejs

Еще одна ошибка:

ReferenceError: jurusan не определен в Angular с Nodejs

Ошибка достаточно ясна, $scope.jurusan = jurusan; здесь jurusan нигде в вашем коде не определен. Ожидаете ли вы, что jurusan будет приносить какую-то ценность, исходящую от сервера?

Pal Singh 28.10.2018 07:55

Я ожидаю, что jurusan в angular покажет данные из jurusan в nodeJS @PalSingh

redwhale21 28.10.2018 08:05

Angular (или интерфейс) не знает ничего, что вы объявили в NodeJS (или сервере), поэтому вам нужно получить данные с сервера с помощью $ http и назначить их jurusan.

Pal Singh 28.10.2018 08:08

поэтому я должен объявить маршрут для получения jurusan в файле nodeJS ?? @PalSingh

redwhale21 28.10.2018 08:13

напишите, пожалуйста, свой ответ @PalSingh

redwhale21 28.10.2018 08:14
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
35
1

Ответы 1

Ваш контроллер (или сервис) должен загрузить данные jurusan из вашей конечной точки nodejs, а затем использовать их:

app.controller('drpdn', function($scope, $http){
    // Simple GET request example:
    $http({
        method: 'GET',
        url: '/jurusan' // USE YOUR NODEJS ENDPOINT TO LOAD DATA
    }).then(function(response) {
        // this callback will be called asynchronously
        // when the response is available
        $scope.jurusan = response.data.jurusan;
    }, function(response) {
      // called asynchronously if an error occurs
      // or server returns response with an error status.
    });
});

Я попробовал ваш ответ, и <option> повторяется, но текст не отображается, он просто пустой

redwhale21 28.10.2018 08:20

сделать $scope.jurusan = response.jurusan;

Pal Singh 28.10.2018 08:58

Можете ли вы опубликовать точный ответ, отправленный вашим node api?

Pal Singh 28.10.2018 08:58

Я проверяю свой угловой с console.info($scope.jurusan), он говорит, что undefined

redwhale21 28.10.2018 09:09

Я попытался создать console.info под $scope.jurusan = response.data.jurusan, он показывает данные, но на ng-repeat он все еще пуст.

redwhale21 28.10.2018 09:24

попробуйте $ scope. $ digest () после $ scope.jurusan = response.data.jurusan

Pal Singh 28.10.2018 09:27

я получил эту ошибку Error: [$rootScope:inprog] $digest already in progress

redwhale21 28.10.2018 09:34

Тогда вам не нужно добавлять $ digest. В основном у вас есть данные в вашем контроллере, они также назначены для $scope.jurusan, может быть что-то маленькое, из-за которого имя не видно. Попробуй проверить, не выставляется ли value в опциях?

Pal Singh 28.10.2018 09:39

можешь показать какой именно console.info($scope.jurusan);. Сделайте это после того, как придадите ему ценность.

Pal Singh 28.10.2018 09:48

Журнал выглядит нормально. Попробуйте добавить track by $index в ng-repeat

Pal Singh 28.10.2018 10:04

нравится? ng-repeat = "track by $index

redwhale21 28.10.2018 10:06

ng-repeat = "jur in jurusan track by $ index"

Pal Singh 28.10.2018 10:08

он дает тот же ответ :(

redwhale21 28.10.2018 10:09

Проверьте, что это печатает в вашем ng-repeat: {{jur}}

Pal Singh 28.10.2018 10:11

Другие вопросы по теме