从控制器访问变量的AngularJS引发参考错误

时间:2017-05-10 16:19:33

标签: javascript angularjs

我正在尝试从控制器访问变量,但它一直给我以下错误。不知道为什么说vm没有定义。

  

未捕获的ReferenceError:未定义vm       在localhost /:1

的index.html

<!DOCTYPE html>
<html ng-app="test" ng-controller="mainController as vm">

<head>
        <style id="antiClickjack">body{display:none !important;}</style>
        <script type="text/javascript">
            var Meta = vm.Meta;
        </script>
</head>

<body>
    <section ui-view></section>
</body>
</html>

mainController.js

(function() {
"use strict";

angular
    .module("test")
    .controller("mainController", mainController);

mainController.$inject = [
    "$rootScope",
    "$window",
    "$scope",
    "$log",
    "UserService"
];

function mainController($rootScope, $window, $scope, $log, UserService) {

    var vm = this;

    vm.Meta = function() {
        var Meta = {};
        UserService.getUserData().then(
            function(response) {
                if (response.data) {
                    Meta = response.data;
                    Meta.firstName = response.data.name || "";
                }
            }
        );
        return Meta;
    };
}

2 个答案:

答案 0 :(得分:0)

OutStr = OutStr & Chr(10) & getStr 附加到OutStr = OutStr & " " & getStr 而不是meta

$scope

然后,在您的内联this块中公开您的范围:

$scope.Meta = function() { 
    ... 
}

此外,使用<script>语法无法确保您在此方案中获得任何内容,因此请将其更改为var scope = angular.element( document.querySelector('[ng-app="test"]') ).scope(); var Meta = scope.Meta;

答案 1 :(得分:0)

你加载mainController.js?我没有在<head/>

中看到它

此外,您的示例未显示匿名函数的关闭,并且它是立即调用(function (angular) {...})(angular);