Ответ 1
Является ли someVariable
строкой? Если нет, возможно, вам придется передать его в строку перед доступом к свойству length. Любой простой способ - связать его с пустой строкой:
{{(myObject.someVariable + '').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" Является ли someVariable
строкой? Если нет, возможно, вам придется передать его в строку перед доступом к свойству length. Любой простой способ - связать его с пустой строкой:
{{(myObject.someVariable + '').length}}
Вы можете обойти эту проблему, настроив ручного наблюдателя в области видимости, чтобы обновить переменную длиной строки:
$scope.$watch('myObject.someVariable',function(newValue) {
$scope.myVariableLength = newValue.length;
})