繁体   English   中英

Angular和JavaScript范围用于变量访问

[英]Angular and javascript scope for variable access

在视图中,我像这样声明控制器:

<div data-ng-controller="myController as myCtrl">
     {{myCtrl.selectedMonth}}
</div>

我希望能够在视图中访问一个月,但是我不希望从视图中访问日期对象。 这样可以吗? 从视图可以访问testabc吗? 这是在控制器上具有私有作用域变量的好方法吗?

;(function() {
    'use strict';

    angular
        .module('myApp')
        .controller('myController', myController);

    function myController() {

        var testabc = 'can you see this';
        var dateRef = new Date();
        var vm = this;

        angular.extend(vm, {
                selectedMonth: undefined
        });

        init();

        function init(){

            vm.selectedMonth = dateRef.getMonth();
        }


    }

}());

首先不要触发控制器中的初始化,因为它有时会产生问题。 您可以使用angular ng-init指令。

;(function() {
    'use strict';

    angular
        .module('myApp')
        .controller('myController', myController);

    function myController() {

        var testabc = 'can you see this';
        var dateRef = new Date();
        var vm = this;

        angular.extend(vm, {
                selectedMonth: undefined,
                init:init
        });



        function init(){

            vm.selectedMonth = dateRef.getMonth();
        }


    }

}());

您的看法将是

<div data-ng-controller="myController as myCtrl" ng-init="myCtrl.init()">
     {{myCtrl.selectedMonth}}
</div>

PS是的,您的selectedMonth在视图中可见。

您绑定到范围的任何内容都将在视图中访问。 范围是控制器和HTML视图之间的粘合剂。 如果您只需要访问月份,则将其绑定到vm。

vm.selectedMonth= dateRef.getMonth();

这条线就足够了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM