0

Я следовал этому руководству, чтобы создать проект с Loopback и AngularJs. https://github.com/strongloop/loopback-example-angularLoopback, AngularJS и проверка

Теперь у меня есть приложение с:

  • HTML файлов (с Bootstrap)
  • AngularJS контроллеров
  • AngularJS служба (генерируется с синтаксисом фунт-нг/сервер server.js клиент/JS /services/lb-services.js)
  • модели (находится в папке ./common)
  • MongoDB бэкэндом

модель "Устройство" определяется в ./common/models/device.js

module.exports = function(Device) { 
}; 

И в ./common/models/device.json

{ 
    "name": "Device", 
    "base": "PersistedModel", 
    "idInjection": true, 
    "properties": { 
    "name": { 
     "type": "string", 
     "required": true 
    }, 
    "description": { 
     "type": "string", 
     "required": true 
    }, 
    "category": { 
     "type": "string", 
     "required": true 
    }, 
    "initialDate": { 
     "type": "date" 
    }, 
    "initialPrice": { 
     "type": "number", 
     "required": true 
    }, 
    "memory": { 
     "type": "number" 
    } 
    }, 
    "validations": [], 
    "relations": {}, 
    "acls": [], 
    "methods": [] 
} 

В "AddDeviceController" , у меня есть инициализацию часть с:

$scope.device = new DeviceToBuy({ 
    name: '', 
    description: '', 
    category: '', 
    initialPrice: 0, 
    memory: 8 
    initialDate: Date.now() 
}); 

И я могу спасти $ scope.device при выполнении следующего метода:

$scope.save = function() { 
    Device.create($scope.device) 
     .$promise 
     .then(function() { 
     console.log("saved"); 
     $scope.back(); // goto previous page 
     }, function (error) { 
     console.log(JSON.stringify(error)); 
     }); 
    } 

Когда все действительно, модель сохраняется в бэкэнд. Если что-то недействительно в $ scope.device, я получаю сообщение об ошибке из моего бэкэнда. Так что все работает нормально.

Теперь я хотел бы использовать модель для проверки на стороне клиента перед отправкой моей модели на бэкэнд и поместить некоторый «класс ошибок» в элементы управления начальной загрузкой.

Я пытался что-то в функции scope.save $ перед отправкой бэкэндом:

if ($scope.device.isValid()) { 
    console.log("IsValid"); 
} else { 
    console.log("Not Valid"); 
} 

Но я получаю исключение «неопределенные не является функцией» -> IsValid() не существует. И я не могу найти пример того, как выполнить эту проверку на стороне клиента.

+0

Что такое 'isValid()' function? где вы его устанавливаете? – PSL

+0

Здесь я нашел документацию, указывающую, что модель (Устройство) наследует некоторые функции. Http://docs.strongloop.com/display/public/LB/Basic+model+object – hugoterelle

ответ

2

Модели LoopBack не используются и поэтому не обеспечивают проверку на стороне клиента вне коробки. Перед вызовом $ save следует использовать механизмы проверки угла.

+0

И можно ли использовать «./common/ model/device.json "для Угловой проверки? – hugoterelle

+0

Не без какой-либо работы - угловая проверка выполняется с использованием атрибутов на элементах ввода формы. См. Https://scotch.io/tutorials/angularjs-form-validation. Если вы хотите, чтобы вы * могли * написать генератор HTML, который использует файл model.json и выводит соответствующие правила проверки в соответствии с директивой углового ввода. – Brian

+0

Но подумайте об этом - 'slc arc' предоставляет это для добавления данных для админов dev, поэтому было бы гипотетически возможно вникнуть в исходный код дуги и перераспределить его для общественного потребления. – Brian

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