Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript/Angular:小助手函数的放置位置_Javascript_Angularjs_Helper - Fatal编程技术网

Javascript/Angular:小助手函数的放置位置

Javascript/Angular:小助手函数的放置位置,javascript,angularjs,helper,Javascript,Angularjs,Helper,我正在开发一个angular应用程序,这是我继承的。我发现未转义的正则表达式有一个bug,所以我想添加一个函数来转义正则表达式,如下所示: function escapeRegExp(string) { return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string } 没什么大不了的,对吧?但是把这个放在哪里呢?正则表达式在控制器中使用。但是,在作用域中

我正在开发一个angular应用程序,这是我继承的。我发现未转义的正则表达式有一个bug,所以我想添加一个函数来转义正则表达式,如下所示:

function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}

没什么大不了的,对吧?但是把这个放在哪里呢?正则表达式在控制器中使用。但是,在作用域中使用此
escapeRegExp
函数是否有意义,如下所示:

                    $scope.escapeRegExp = function(string) {
                      return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
                    }

我有点困惑,这些小函数最好放在哪里。最佳实践是什么?

如果希望重用这段代码,请将其作为服务放到单独的模块(utils/common/shared)中


如果您希望仅将这段代码用于此控制器-将其作为函数提取到单独的文件中

,在我看来,这就像AngularJS?如果ui需要访问它,您只将其放入$scope中。如果是这样的话,那么这是一个很好的放置位置。我希望只在控制器内部使用这段代码。我可以把第一个版本(不含$scope)扔到控制器定义中,今天就到此为止,还是在其他地方定义函数更好?根据我的经验,如果你处理正则表达式(或数学运算),最好将它们分开,并大量地覆盖测试。正则表达式非常脆弱,容易更改。当需求发生变化时,这种方法将使您免于出现bug。我同意您关于将事情分开的观点,但这是一个巨大的项目,我只想修复一个bug,在执行匹配之前,regex没有正确转义。因此,我想添加这一行,以便转义字符串。由此产生了一个问题:在angularjs/javascript中,在何处放置这么小的一行程序。所以,在控制器定义中有一个非作用域辅助函数是可以的,我想?我会说这是可以的