Loopback,AngularJS和验证

时间:2015-01-17 02:43:33

标签: angularjs twitter-bootstrap validation loopbackjs strongloop

我按照本教程创建了一个包含Loopback和AngularJs的项目。 https://github.com/strongloop/loopback-example-angular

现在,我有一个应用程序:

  • HTML文件(使用Bootstrap)
  • AngularJS控制器
  • AngularJS服务(使用语法lb-ng server / server.js client / js / services / lb-services.js生成)
  • 型号(位于./common文件夹中)
  • MongoDB后端

模型“Device”在./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()不存在。 我找不到任何关于如何执行此客户端验证的示例。

1 个答案:

答案 0 :(得分:2)

LoopBack模型是不受影响的,因此不提供开箱即用的客户端验证。在调用$ save之前,您应该使用Angular验证机制。