2015-05-28 2 views
12

Есть ли угловой конкретный способ? Если нет, следует ли использовать встроенный jquery для этого? Если я должен использовать встроенный jquery, как мне добраться до функции trim(), не используя $ (или это необходимо)?Как отрезать() строку в angularjs?

Редактировать - Да, я знаю о str.trim(). Сожалею. Мне нужно это для работы в IE 8

Редактировать. Поскольку этот вопрос является дубликатом, я задаю конкретно, как это сделать в угловом формате, на котором упоминается ответ, как это сделать в javascript, node и jquery. Есть ли способ сделать это, используя встроенный jquery в угловом?

Edit - По-видимому, ответ «AngularJS не делает этого» метода

+0

[trim()] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/trim) - встроенный метод прототипа String, поддерживаемый в большинстве браузеров. Ссылка MDN предоставляет polyfill – CodingIntrigue

+0

. Ваше изменение очень несправедливо по отношению к людям, которые уже ответили. Вы должны включить это условие в смещение. – CodingIntrigue

+0

Возможный дубликат [Trim string в JavaScript?] (Http://stackoverflow.com/questions/498970/trim-string-in-javascript) –

ответ

9

использование облицовки() в JavaScript после всех angularjs также является Java-рамка и не надо ставить $ применять облицовку()

, например

var x="hello world"; 
x=x.trim() 
+0

Мне нужно это для работы в IE 7/8/9. trim() не делает этого. – Slartibartfast

+0

Раньше в вопросе не упоминалось, что он не работает для вас в IE, так что теперь вы можете использовать str.replace (/^\ s + | \ s + $/g, ''); –

19

Почему вы не просто использовать в JavaScript trim():

str.trim() //Will work everywhere irrespective of any framework. 

Для совместимости с <IE9 использования:

if(typeof String.prototype.trim !== 'function') { 
    String.prototype.trim = function() { 
    return this.replace(/^\s+|\s+$/g, ''); 
    } 
} 

Нашел Here

+1

Ну ... не везде ... например. в CodingIntrigue

+0

http://kangax.github.io/compat-table/es5/#String.prototype.trim. Только не в строгом режиме в IE9 – com2ghz

+0

Он должен работать в IE 7+ – Slartibartfast

17

Если вам нужен только дисплей усеченное значение, то я предложил бы против манипулирования исходной строки и вместо этого используется filter.

app.filter('trim', function() { 
    return function(value) { 
     if(!angular.isString(value)) { 
      return value; 
     } 
     return value.replace(/^\s+|\s+$/g, ''); // you could use .trim, but it's not going to work in IE<9 
    }; 
}); 

А потом

<span>{{ foo | trim }}</span> 
1

JS .trim() поддерживается в основном Everthing, за исключением IE 8 и ниже.

Если вы хотите, чтобы это сработало, вы можете использовать JQuery, но это должно быть < 2.0.0 (поскольку они удалили поддержку IE8 в строке 2.x.x).

другое Ваш вариант, если вы заботитесь о IE7/8 (Как вы уже ранее), чтобы добавить подрезать себя:

if(typeof String.prototype.trim !== 'function') { 
    String.prototype.trim = function() { 
    return this.replace(/^\s+|\s+$/g, ''); 
    } 
} 
+1

Из этого и других ответов я собираюсь, что нет определенного способа обращения с этим. – Slartibartfast

+0

Вы правы, нет. – YaManicKill

3

я вставить этот код в моем теге, и он работает правильно:

ng-show="!Contract.BuyerName.trim()" > 
+0

Почему это нисходящее? Отлично работает для меня и, кажется, является самым простым решением. –

Смежные вопросы