Подтвердить что ты не робот

Angular Проблема с JS с string.length в шаблонах

У меня проблема с AngularJS (версия 1.2.6).

По какой-то причине я не мог понять, что я не могу получить доступ к свойству length строковой переменной, хранящейся в $scope.

В шаблоне:

String '{{myObject.someVariable}}' has length '{{myObject.someVariable.length}}'.

В контроллере:

$scope.myObject = {} ; 

//asynchronuous loading of myObject 
SomeService.loadObject(function(result)){
    $scope.myObject = result ; 
    console.log("Content: '%s', length:'%i'",$scope.myObject.someVariable,$scope.myObject.someVariable.length);
    $scope.$apply();
});

Результат:

String 'aaaa' has length ''.

В консоли я правильно вижу Content:'aaaa', length:'4'

Это раздражает, потому что я отображаю (или не) некоторые части шаблона в зависимости от размера строки.

Update

$scope.myObject.someVariable - строка. Я добавил точку останова в функции обратного вызова с двумя часами:

  • $scope.myObject.someVariable: "aaaa"
  • typeof($scope.myObject.someVariable): "string"
4b9b3361

Ответ 1

Является ли someVariable строкой? Если нет, возможно, вам придется передать его в строку перед доступом к свойству length. Любой простой способ - связать его с пустой строкой:

{{(myObject.someVariable + '').length}}

Ответ 2

Вы можете обойти эту проблему, настроив ручного наблюдателя в области видимости, чтобы обновить переменную длиной строки:

$scope.$watch('myObject.someVariable',function(newValue) {
  $scope.myVariableLength = newValue.length; 
})