#node.js #angularjs #sails.js
#node.js #angularjs #sails.js
Вопрос:
Я пытаюсь разобраться в наилучшем способе сделать это, поэтому буду признателен за любую помощь.
Если вы нажмете на эту ссылку «/comment/ {threadid} {независимо от названия комментария}», Sails перейдет и получит содержимое ThreadId из базы данных. Как только он захватит эти данные, он отправит их в Angular, и Angular отобразит их.
Это приложение CRUD, которое должно быть одностраничным приложением.
Любое направление было бы полезно, поскольку я не на 100% контролирую поток документа. Я продолжаю путаться в том, какой маршрутизатор (Angular или Sails) должен принимать URI.
Спасибо!
Ответ №1:
Вы пробовали angular-sails-bind для привязки моделей sails к моделям angular scope? (https://github.com/diegopamio/angular-sails-bind). Я сделал это для своего собственного проекта, а затем решил поместить его в отдельную библиотеку, чтобы все могли извлечь выгоду, и я мог бы получить свой первый опыт разработки пакета bower.
По сути, он создает CRUD в реальном времени (сокет) для вашего клиента, который автоматически сохраняет и извлекает информацию из моделей sails.
Я надеюсь, что это может вам помочь (хотя кажется, что вы используете определенные конечные точки контроллера).
Кстати: он работает с sails 0.10 (поскольку некоторые вещи, такие как названия тем, изменились с 0.9). Если вам нужно заставить его работать с 0.9, просто дайте мне знать, и я буду рад помочь.
Ответ №2:
Sails предоставляет конечные точки REST, которые использует ваше приложение Angular, в противном случае оно будет обслуживать приложение Angular и связанные с ним (возможно, статические) ресурсы. Приложение Angular может быть отправлено из Sails для любого 404, который выглядит как html-запрос (в моем случае это то, что происходит, но вам понадобится что-то более сложное, если SEO важно).
Приложение Angular обрабатывает маршрутизацию в приложении на клиенте, включая 404 / отсутствующие маршруты.
В основном вся маршрутизация, которую традиционный проект обрабатывал бы на стороне сервера, теперь обрабатывается в клиенте с помощью Angular, в то время как api передается в формате JSON от Sails к клиенту.
Вы можете писать тесты для своего api и приложения Angular отдельно (я использовал Frisbyjs Jasmine для api и Karma / Protractor Jasmine для приложения).
Ответ №3:
что я делаю, так это создаю сервисы, которые извлекают данные, а затем вводят их в контроллеры, sails по умолчанию предоставляет Rest api из ваших созданных моделей, поэтому, если у вас есть модель Employees в sails, подобная этой:
module.exports = {
schema:true,
attributes: {
firstName: {
type: 'STRING',
},
}
}
вы можете получить к нему доступ, перейдя по
http://localhost:1337/Employees
или использование angular ngResource в службе сотрудников
angular.module('app')
.factory('EmployeesFactory',function($resource){
return{
getEmployees:function(searchedName){
return $resource('http://localhost:1337/Employees',{name:'@id'})
.query({name:searchedName}).$promise.then(function(response){
return response;
});
},
и в вашем контроллере
angular.module('app')
.controller('EmployeesController',function($scoppe,EmployeesFactory){
function init(){
$scope.employees=EmployeesFactory.getEmployees();
}
init();
// or to retrieve a specific employee by name
$scope.findbyName=function(employeeName){
$scope.employees=EmployeesFactory.getEmployees(employeeName);
}
}
надеюсь, это поможет!
Комментарии:
1. Прежде всего, спасибо за вашу помощь и исходный код. Что я пытаюсь понять, так это то, есть ли способ обойти необходимость жесткой ссылки на $ resource на заводе. Все примеры, которые я видел, которые похожи на этот, все имеют жесткую ссылку. Кроме того, куда вы помещаете код для сервисов?