簡體   English   中英

將AngularJS表單提交到鏈接的Mongoose模型

[英]Submitting AngularJS form to linked Mongoose model

我正在使用mean.js,並希望創建兩種形式。 一個用於網站,另一個用於網站頁面模板。

網站API POST路由為/api/websites

頁面模板API POST路由為/api/websites/:websiteId/page-templates

網站模型modules/websites/server/models/website.server.model.js

var WebsiteSchema = new Schema({
  name: {
    type: String,
    default: '',
    required: 'Please fill Website name',
    trim: true
  },
  domain: {
    type: String,
    required: 'Please fill a correct domain name',
    trim: true
  },
  active: {
    type: Boolean,
    default: true,
    required: true
  },
  country: {
    type: String,
    required: true
  },
  created: {
    type: Date,
    default: Date.now
  },
  user: {
    type: Schema.ObjectId,
    ref: 'User'
  }
});

頁面模板模型modules/websites/server/models/page-template.server.model.js

var PageTemplateSchema = new Schema({
  website: {
    type: Schema.ObjectId,
    required: 'Website object not found'
  },
  template_name: {
    type: String,
    trim: true,
    required: 'Please enter template name'
  },
  art_name_dom: {
    type: String,
    trim: true
  },
  active: {
    type: Boolean,
    default: true,
    required: true
  },
  created: {
    type: Date,
    default: Date.now
  },
  user: {
    type: Schema.ObjectId,
    ref: 'User'
  }
});

網站的角度表單工作正常,但錯誤出現在頁面模板表單上

頁面模板表單modules/websites/client/views/page-templates/form-page-template.client.view.html

...
 <p class="card-description">Website: <a href="{{vm.website.domain}}" target="_blank">{{vm.website.name}}</a></p>
 <form name="vm.form.pageTemplateForm" class="forms-sample" ng-submit="vm.save(vm.form.pageTemplateForm.$valid)"
              novalidate>
...

控制器modules/websites/client/controllers/page-templates/page-templates.client.controller.js

angular
    .module('websites')
    .controller('PageTemplatesController', PageTemplatesController);

  PageTemplatesController.$inject = ['$scope', '$state', '$window', 'Authentication', 'websiteResolve', 'pageTemplateResolve', 'Notification'];

  function PageTemplatesController($scope, $state, $window, Authentication, website, pageTemplate, Notification) {
    var vm = this;

    vm.authentication = Authentication;
    vm.page_template = pageTemplate;
    vm.website = website;
    vm.error = null;
    vm.form = {};
    vm.save = save;

    // Save Website
    function save(isValid) {
      if (!isValid) {
        $scope.$broadcast('show-errors-check-validity', 'vm.form.pageTemplateForm');
        return false;
      }

      vm.page_template.createOrUpdate()
        .then(successCallback)
        .catch(errorCallback);

      function successCallback(res) {
        $state.go('websites.view'); // should we send the User to the list or the updated Article's view?
        Notification.success({ message: '<i class="glyphicon glyphicon-ok"></i> Article saved successfully!' });
      }

      function errorCallback(res) {
        Notification.error({ message: res.data.message, title: '<i class="glyphicon glyphicon-remove"></i> Article save error!' });
      }
    }
  }

網站表格運行正常。 錯誤與頁面模板表單一起出現。 據我了解,頁面模板表格無法引用網站進行存儲。

在表單提交時遇到此錯誤

頁面模板表單提交錯誤

我必須以Angular的$resource對象為目標並像這樣手動定義查詢方法的URL

function PageTemplatesService($resource, $log) {
    var PageTemplate = $resource('/api/websites/:websiteId/page-template/:pageTemplateId', {
      pageTemplateId: '@_id',
      websiteId: '@_id'
    }, {
      save: {
        url: '/api/websites/:websiteId/page-templates',
        method: 'POST'
      },
      query: {
        url: '/api/websites/:websiteId/page-templates'
      },
      update: {
        method: 'PUT'
      }
    });
....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM