2016-02-18 3 views
0

У меня есть простой код, который пытается отобразить значение typeof("a") на странице html. То, что я всегда получаю, ничего не отображается, в то время как я ожидаю «строку». То же самое касается других типов данных. Вот мой plnkr: https://plnkr.co/edit/mUASA8s9TgplwysMhXvG?p=previewangularjs: не отображается возвращаемое значение JS `typeof`

Я что-то пропустил? Замечу, что моей конечной целью является использование ng-if с условием, основанным на типе переменной.

Угловая версия: 1.4.8

+2

он ищет $ scope.typeof. Вы должны определить его через $ scope.typeof = function (data) {return typeof data; }; –

ответ

1

у вас нет доступа непосредственно typeof в TEmplate. Другое использование подход это:

В контроллер

app.controller('MainCtrl', function($scope) { 
    $scope.name = 'World'; 
    $scope.typeOfFun = function(name){ 
    return typeof name; 
    } 
}); 

В Templte

<div>{{typeOfFun("a")}}</div> 
1

Ваш код имеет несколько проблем:

  1. typeof синтаксис «s является typeof a и не typeof(a)
  2. typeof не является законным выражением для углового-х expression-binding, таким образом, ISN 'напечатано в шаблоне.

Учитывая два пункта выше, вы должны переместить проверку на внешнюю функцию и использовать правильный синтаксис - и все работает :)

См the corrected code:

var app = angular.module('plunker', []); 
 

 
app.controller('MainCtrl', function($scope) { 
 
    $scope.name = 'World'; 
 
    $scope.getTypeOfA = function() { 
 
    return typeof "a" 
 
    } 
 
});
<!DOCTYPE html> 
 
<html ng-app="plunker"> 
 

 
    <head> 
 
    <meta charset="utf-8" /> 
 
    <title>AngularJS Plunker</title> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.min.js" type="text/javascript"></script> 
 
    <script>document.write('<base href="' + document.location + '" />');</script> 
 
    <link rel="stylesheet" href="style.css" /> 
 
    <script src="app.js"></script> 
 
    </head> 
 

 
    <body ng-controller="MainCtrl"> 
 
    <p>Hello {{name}}!</p> 
 
    <div>{{"aaa"}}</div> 
 
    <div>{{getTypeOfA()}}</div> 
 
    </body> 
 

 
</html>

Очевидно, что вы хотите передать переменную функции «checkTypeOf» и вернуть результат Не делай этого так, как я. Это только для демонстрационных целей !!!!