2017-01-23 143 views
0

我想要做一个帖子,并非常简单地使用引导datetimepicker添加名称和日期时间。当我选择日期时间并点击添加什么都不会发生。但是,如果我输入字段并点击添加它仍然会提交。我已经阅读了很多关于这个项目的自定义指令等,但是我似乎无法让它们中的任何一个工作,所以我想我只是分享我的代码。无法使用angularjs和引导日期时间选择器的表单提交

Index.cshtml

<div class="wrapper wrapper-content animated fadeInRight"> 
     <div class="row"> 
      <div class="col-lg-12"> 
       <div class="ibox float-e-margins"> 
        <div class="ibox-title"> 
         <h5>Create Content Files</h5> 
        </div> 
        <!--Start Form --> 
        <div class="ibox-content"> 
         <div class="form-horizontal" role="form" name="addcontentFileform"> 
          <div class="form-group"> 
           <label for="title" class="col-sm-2 control-label">File Name</label> 
           <div class="col-sm-10"> 
            <input type="text" data-ng-model="contentFile.FileName" class="form-control" id="title" placeholder="Your File Name" required title="Enter your File Name" /> 
           </div> 
          </div> 

          <div class="form-group"> 
           <label for="title" class="col-sm-2 control-label">Publish Date</label> 
           <div class="col-sm-10"> 
            <div class="input-group date"> 
             <span class="input-group-addon"><i class="glyphicon glyphicon-calendar"></i></span> 
             <input type="text" class="form-control datetimepicker" id="datetimepicker" data-ng-model="contentFile.PublishDate" /> 
             <span class="glyphicon form-control-feedback"></span> 
            </div> 
           </div> 
          </div> 

          <div class="form-group"> 
           <div class="col-sm-offset-2 col-sm-10"> 
            <span data-ng-hide="editMode"> 
             <input type="submit" value="Add" ng-disabled="addcontentFileform.$invalid" data-ng-click="add()" class="btn btn-primary" /> 
            </span> 
            <span data-ng-show="editMode"> 
             <input type="submit" value="Update" ng-disabled="addcontentFileform.$invalid" data-ng-click="update()" class="btn btn-primary" /> 
            </span> 
           </div> 
          </div> 
          <!-- Start form Buttons --> 
          <div class="form-group"> 
           <div class="modal-footer"> 
            <button type="button" class="btn btn-default" data-ng-click="closeAddUpdate()">Cancel</button> 
           </div> 
          </div> 
          <!-- End form Buttons --> 
         </div> 
        </div> 
        <!--End Form --> 
       </div> 
      </div> 
     </div> 
    </div> 

我打电话引导插件和页面上的控制器如预期。

contentFile.controller.js

var app = angular.module('contentFileApp', []); 
var baseAddress = 'http://localhost:63271/api/ApiContentFile/'; 
var url = ""; 

app.factory('contentFileFactory', function ($http) { 
return { 
    getContentFilesList: function() { 
     url = baseAddress + "GetContentFilesList"; 
     return $http.get(url); 
    }, 
    getContentFile: function (contentFile) { 
     url = baseAddress + "GetContentFile/" + contentFile.Id; 
     return $http.get(url); 
    }, 
    addContentFile: function (contentFile) { 
     url = baseAddress + "Post"; 
     return $http.post(url, contentFile); 
    }, 
    updateContentFile: function (contentFile) { 
     url = baseAddress + "Put/" + contentFile.Id; 
     return $http.put(url, contentFile); 
    }, 
    deleteContentFile: function (contentFile) { 
     url = baseAddress + "DeleteContentFile/" + contentFile.Id; 
     return $http.delete(url); 
    } 
}; 
}); 
app.controller('contentFileController', function PostController($scope, contentFileFactory) { 
$scope.contentFiles = []; 
$scope.contentFile = null; 
$scope.editMode = false; 

//get ContentFile 
$scope.get = function() { 
    $scope.contentFile = this.contentFile; 
    $('#viewModal').toggle('show'); 
    $('#fullModal').toggle('hide'); 
}; 

//get all ContentFiles 
$scope.getAll = function() { 
    contentFileFactory.getContentFilesList().success(function (data) { 
     $scope.contentFiles = data 
     //$('#fullModal').toggle('show'); 
     $('#viewModal').toggle('hide'); 
     $('#contentFileModel').toggle('hide'); 
     $('#confirmModal').toggle('hide'); 
    }).error(function (data) { 
     $scope.error = "An Error has occured while Loading contentFiles! " + data.ExceptionMessage; 
    }); 
}; 

// add ContentFile 
$scope.add = function() { 
    var currentContentFile = this.contentFile; 
    //if (currentContentFile != null && currentContentFile.FileName != null && currentContentFile.PublishDate && currentContentFile.PhotoURL && currentContentFile.IsOwned && currentContentFile.FileLink && currentContentFile.Description) 
    if (currentContentFile != null && currentContentFile.FileName != null && currentContentFile.PublishDate) { 
     contentFileFactory.addContentFile(currentContentFile).success(function (data) { 
      $scope.addMode = false; 
      currentContentFile.Id = data; 
      $scope.contentFiles.push(currentContentFile); 

      //reset form 
      $scope.contentFile = null; 
      // $scope.addcontentFileform.$setPristine(); //for form reset 

      $('#contentFileModel').modal('hide'); 
      $('#fullModal').toggle('show'); 
     }).error(function (data) { 
      $scope.error = "An Error has occured while Adding contentFile! " + data.ExceptionMessage; 
     }); 
    } 
}; 

//edit contentFile 
$scope.edit = function() { 
    $scope.contentFile = this.contentFile; 
    $scope.editMode = true; 
    $('#contentFileModel').toggle('show'); 
    $('#fullModal').toggle('hide'); 
}; 

//update contentFile 
$scope.update = function() { 
    var currentContentFile = this.contentFile; 
    contentFileFactory.updateContentFile(currentContentFile).success(function (data) { 
     currentContentFile.editMode = false; 

     $('#contentFileModel').toggle('hide'); 
     $('#fullModal').toggle('show'); 
    }).error(function (data) { 
     $scope.error = "An Error has occured while Updating contentFile! " + data.ExceptionMessage; 
    }); 
}; 

// delete ContentFile 
$scope.delete = function() { 
    currentContentFile = $scope.contentFile; 
    contentFileFactory.deleteContentFile(currentContentFile).success(function (data) { 
     $('#confirmModal').toggle('hide'); 
     $('#fullModal').toggle('show'); 
     //$('#fullModal').toggle('hide'); 
     $scope.contentFiles.pop(currentContentFile); 

    }).error(function (data) { 
     $scope.error = "An Error has occured while Deleting contentFile! " + data.ExceptionMessage; 

     $('#confirmModal').toggle('hide'); 
    }); 
}; 

//Model popup events 
$scope.showadd = function() { 
    $scope.contentFile = null; 
    $scope.editMode = false; 
    $('#contentFileModel').toggle('show'); 
    $('#fullModal').toggle('hide'); 
}; 

$scope.showedit = function() { 
    $('#contentFileModel').toggle('show'); 
    $('#fullModal').toggle('hide'); 
}; 

$scope.showconfirm = function (data) { 
    $scope.contentFile = data; 
    $('#confirmModal').toggle('show'); 
    $('#fullModal').toggle('hide'); 
}; 

$scope.cancel = function() { 
    $scope.contentFile = null; 
    $('#confirmModal').toggle('hide'); 
    $('#fullModal').toggle('show'); 
} 

$scope.closeDetails = function() { 
    $scope.contentFile = null; 
    $('#viewModal').toggle('hide'); 
    $('#fullModal').toggle('show'); 
} 
$scope.closeAddUpdate = function() { 
    $scope.contentFile = null; 
    $('#contentFileModel').toggle('hide'); 
    $('#fullModal').toggle('show'); 
} 
$scope.closeDelete = function() { 
    $scope.contentFile = null; 
    $('#confirmModal').toggle('hide'); 
    $('#fullModal').toggle('show'); 
} 

//initialize your contentFiles data 
$scope.getAll(); 
}); 

很抱歉的混乱和混乱,我只是真的很好奇如何这一切工作,我可能是做错了

编辑:似乎contentFile.PublishDate没有绑定到模型,当我点击添加按钮

+0

你有什么错误吗?毕竟...这个指令要求你也安装momentJS ..如果你忘了它,你可能有一个错误等待你在开发控制台.... – ymz

+0

我有一个时刻添加,以及我没有得到任何控制台错误,日期刚好在角度控制器中未定义 –

+0

您有2个类型为'submit'的输入形式相同。如果您没有以传统的HTML方式提交表单,我会将其更改为'type =“button”'。否则,目前还不清楚点击这些时发生了什么 –

回答

1

我发现它!您添加方法中你得到了这个行:

if (currentContentFile != null && 
    currentContentFile.FileName != null && 
    currentContentFile.PublishDate) 

问题:您填写的日期字段之前,currentContentFile.PublishDate将永远是不确定的将因此从保持在设定值阻止你第一次......这也是为什么你的“固定”它通过手动插入值

总之

- 替换为上述声明:

if (currentContentFile != null && 
    currentContentFile.FileName != null) 
+0

该字段可以工作,但如果我输入日期而不是从中选择它的工作日期选择器,由于某种原因,虽然选择日期放入日期,但是当我尝试添加它时,添加按钮什么都不做,就好像从输入文本框中的日期选择器的值没有绑定,除非它的输入 –