Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 传递给其内部组件的访问对象';自己的控制器_Javascript_Angularjs - Fatal编程技术网

Javascript 传递给其内部组件的访问对象';自己的控制器

Javascript 传递给其内部组件的访问对象';自己的控制器,javascript,angularjs,Javascript,Angularjs,所以我得到了这个组件。我可以访问传递到其绑定的数据。 但只有在它的模板。我需要访问组件自己的控制器中的对象,以便对其执行一些操作。我有点被困在想这个问题上了 以下是组件: angular.module('MpWatchModule').component('mPointlite', { bindToController: false, restrict: 'E', templateUrl: '/NG-MPWatch/Templates/mPointLite.html',

所以我得到了这个组件。我可以访问传递到其绑定的数据。 但只有在它的模板。我需要访问组件自己的控制器中的对象,以便对其执行一些操作。我有点被困在想这个问题上了

以下是组件:

angular.module('MpWatchModule').component('mPointlite', {
    bindToController: false,
    restrict: 'E',
    templateUrl: '/NG-MPWatch/Templates/mPointLite.html',
    controller: function (NgMap) {
        this.googleMapsUrl = 'https://maps.google.com/maps/api/js?key=<my_api_key>';
        NgMap.getMap().then(function (map) {
            this.map = map;
            this.map.setMapTypeId('terrain');
           // this.map.setMapTypeId('satellite');
            this.mpObjs = mpdata;
        });
    },
    controllerAs: 'mpl',
    bindings: {
        mpdata: '<',
    },
});
angular.module('MpWatchModule')。组件('mPointlite'{
bindToController:false,
限制:'E',
templateUrl:“/NG MPWatch/Templates/mPointLite.html”,
控制器:功能(NgMap){
这是谷歌地图https://maps.google.com/maps/api/js?key=';
NgMap.getMap().then(函数(map){
this.map=map;
this.map.setMapTypeId('terrain');
//this.map.setMapTypeId('satellite');
this.mpObjs=mpdata;
});
},
controllerAs:'mpl',
绑定:{

mpdata:“我只是把JS代码放在一个单独的地方。试试下面的方法,你会在控制器中得到绑定

JS:

控制器:功能(NgMap){
var ctrl=this;
这是谷歌地图https://maps.google.com/maps/api/js?key=';
NgMap.getMap().then(函数(map){
this.map=map;
this.map.setMapTypeId('terrain');
//this.map.setMapTypeId('satellite');
this.mpObjs=ctrl.mpdata;
});
}

我只是把JS代码放在一个单独的地方。尝试下面的方法,您将在控制器中获得绑定

JS:

控制器:功能(NgMap){
var ctrl=this;
这是谷歌地图https://maps.google.com/maps/api/js?key=';
NgMap.getMap().then(函数(map){
this.map=map;
this.map.setMapTypeId('terrain');
//this.map.setMapTypeId('satellite');
this.mpObjs=ctrl.mpdata;
});
}

删除
bindToController:false

默认情况下,角度组件的bindToController设置为true,并允许您访问控制器范围内的绑定

然后在控制器中调整线路:

this.mpObjs = mpdata;
要成为
this.mpObjs=this.mpdata;

我建议将代码按照这样的方式进行布局,以提高可读性,更容易进行更改/使用,并遵循angular style指南:

(功能(){ "严格使用",

angular
    .module('MpWatchModule')
    .component('mPointlite', {
        restrict: 'E',
        bindings: {
            mpdata: '<',
        },
        templateUrl: '/NG-MPWatch/Templates/mPointLite.html',
        controller: PointLiteController,
        controllerAs: 'mpl'
    });

PointLiteController.$inject = ['NgMap'];

function PointLiteController(NgMap) {
    var mpl = this;
    mpl.googleMapsUrl = 'https://maps.google.com/maps/api/js?key=<my_api_key>';

    activate();

    function activate() {
        NgMap.getMap().then(function (map) {
            mpl.map = map;
            mpl.map.setMapTypeId('terrain');
            mpl.mpObjs = mpl.mpdata;
        });
    }
}
angular
.module('MpWatchModule')
.component('mPointlite'{
限制:'E',
绑定:{

mpdata:“删除
bindToController:false

默认情况下,角度组件的bindToController设置为true,并允许您访问控制器范围内的绑定

然后在控制器中调整线路:

this.mpObjs = mpdata;
要成为
this.mpObjs=this.mpdata;

我建议将代码按照这样的方式进行布局,以提高可读性,更容易进行更改/使用,并遵循angular style指南:

(功能(){ "严格使用",

angular
    .module('MpWatchModule')
    .component('mPointlite', {
        restrict: 'E',
        bindings: {
            mpdata: '<',
        },
        templateUrl: '/NG-MPWatch/Templates/mPointLite.html',
        controller: PointLiteController,
        controllerAs: 'mpl'
    });

PointLiteController.$inject = ['NgMap'];

function PointLiteController(NgMap) {
    var mpl = this;
    mpl.googleMapsUrl = 'https://maps.google.com/maps/api/js?key=<my_api_key>';

    activate();

    function activate() {
        NgMap.getMap().then(function (map) {
            mpl.map = map;
            mpl.map.setMapTypeId('terrain');
            mpl.mpObjs = mpl.mpdata;
        });
    }
}
angular
.module('MpWatchModule')
.component('mPointlite'{
限制:'E',
绑定:{

mpdata:“在控制器内部添加var ctrl=this;然后像这样访问。mpObjs=ctrl.mpdata;使用
bindToController:false
,显式关闭所需行为。在控制器内部添加var ctrl=this;然后像这样访问。mpObjs=ctrl.mpdata;使用
bindT显式关闭所需行为。”oController:false
。谢谢你,我何时/何地调用activate()?很好,就是这样。谢谢你对我的看法!谢谢你,我何时/何地调用activate()?很好,就是这样。谢谢你对我的看法!
angular
    .module('MpWatchModule')
    .component('mPointlite', {
        restrict: 'E',
        bindings: {
            mpdata: '<',
        },
        templateUrl: '/NG-MPWatch/Templates/mPointLite.html',
        controller: PointLiteController,
        controllerAs: 'mpl'
    });

PointLiteController.$inject = ['NgMap'];

function PointLiteController(NgMap) {
    var mpl = this;
    mpl.googleMapsUrl = 'https://maps.google.com/maps/api/js?key=<my_api_key>';

    activate();

    function activate() {
        NgMap.getMap().then(function (map) {
            mpl.map = map;
            mpl.map.setMapTypeId('terrain');
            mpl.mpObjs = mpl.mpdata;
        });
    }
}