TypeError:执行删除操作时无法读取未定义的属性'concat'

时间:2017-09-13 06:45:24

标签: javascript angularjs yeoman-generator-angular

我已经通过了stackoverflow中提供的其他解决方案,但它对我没有用。所以请有人建议我在我的情况下做什么。  在我的情况下,当我执行删除操作时它在控制台上给出错误,bt记得它没有反映删除操作,它工作正常。我只是想删除或解决这个错误。

这是我的控制台错误:

TypeError: Cannot read property 'concat' of undefined
at ChildScope.$scope.deleteJob (uploadController.js:454)
at $parseFunctionCall (angular.js:12474)

这是我在第一行的代码。 454:

//delete JD
    $scope.deleteJob = function (fileName) {
      $scope.loadingJobs = true;
      _deleteFile(fileName, AppConstants.docType.JOBDESCRIPTION);
       //line no.454
      if ((jdService.getjdFileName() === fileName) || ((jdService.getjdFileName().concat(".xml") === fileName))) { //line no.454
        $scope.isjdDeleted = false;
        jdService.setisSelected(false);
      }

    };

这是我的方法,我从UI获取jdName:

jdService.setjdFileName(fileName);

这是我的服务,我已经定义了我的jdFileName方法:

var jdService = [
    function() {
        var jdFileName;
        return {
        getjdFileName: function () {
            return jdFileName;
        },
        setjdFileName: function(value) {
            jdFileName = value;
        },

请建议我该怎么做,谢谢

1 个答案:

答案 0 :(得分:0)

如果您将if中的表达式更改为:

if ((jdService.getjdFileName() === fileName) || (((jdService.getjdFileName() || '' ).concat(".xml") === fileName)))

然后这部分(jdService.getjdFileName() || '' )将评估jdService.getjdFileName()返回的值,或者,如果该值是假的,则评估为空字符串('')。这样就可以确保始终在字符串上调用concat()。