我是AngularJS的新手,正在尝试创建一个简单的应用程序,该应用程序允许我将文件上传到我的Laravel驱动的网站。我希望表单向我显示上传项目的预览。所以我正在使用ng-model来实现这一目标,而我偶然发现了以下内容:

我有一些基本的 bootstrap 样式输入,并且我在AngularJS模板中使用自定义括号(因为正如我所提到的,我在其Larblad系统中使用Laravel)。我需要从输入中删除空格(在输入时),并用破折号代替它们:

<div class="form-group"><input type="text" plaeholder="Title" name="title" class="form-control" ng-model="gnTitle" /></div>

然后我有这个:
<a ng-href="/art/[[gnTitle | spaceless]]" target="_blank">[[gnTitle | lowercase]]</a>

我的app.js看起来像这样:
var app = angular.module('neoperdition',[]);

app.config(function($interpolateProvider){
    $interpolateProvider.startSymbol('[[').endSymbol(']]');
});

app.filter('spaceless',function(){
    return function(input){
        input.replace(' ','-');
    }
});

我收到以下错误:
TypeError:无法读取未定义的属性“替换”

我了解我需要先定义该值,然后再对其进行过滤,但是我不确定在哪里准确定义它。而且,如果我定义了它,我也不希望它更改我的占位符。

最佳答案

筛选器中缺少一些内容。首先,您需要返回新字符串。次要,正则表达式不正确,应使用全局修饰符以替换所有空格字符。最后,您还需要检查字符串是否已定义,因为最初的模型值可以是undefined,所以未定义的.replace将引发错误。

全部一起:

app.filter('spaceless',function() {
    return function(input) {
        if (input) {
            return input.replace(/\s+/g, '-');
        }
    }
});

演示:http://plnkr.co/edit/5Rd1SLjvNI18MDpSEP0a?p=preview

关于angularjs - 尝试使用ng-model用破折号替换空格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27474503/

10-12 12:19
查看更多