无法在指令的控制器中访问指令的作用域对象

比拉尔·阿拉姆(Bilal Alam)

MaterialIn.directive.js

angular.module('mdt')
    .directive('mdtMaterialins', materialInsDirective);

function materialInsDirective() {
    return {
        restrict: 'E',
        scope: {
            materialoffers: '=',

        },
        bindToController: true,
        templateUrl: 'app/materialOffers/materialIns/materialIns.html',
        controllerAs: 'materialInsVm',
        controller: MaterialinsController
    };
}
function MaterialinsController($scope) {
    var vm = this;
console.log(vm);  //shows the materialoffers object present
console.log(vm.materialoffers);  //show undefined

}

大家好,我做了一个指令,并向它发送了一个对象数组“ materialoffers”,我可以在html页面上访问它,它工作正常,但是idk为什么我不能在控制器内访问它,它显示未定义,任何人都可以告诉我以一种方式可以在控制器内部使用该材质,我想获取其长度并将其存储在这样的$ scope变量中

vm.total=vm.materialoffers.length;
费西奥

似乎materialoffers变量可能在$ http调用或类似的操作之后获得其值,因为在创建指令时它不会立即具有值。之所以console.log(vm)显示该变量,是因为当您单击它时它显示对象的状态(在本例中为vm)。您可以在浏览器控制台中使用以下代码测试此现象:

var object = {};
object; // logs the object in console, shows an empty object
window.setTimeout(function() {
    object.testValue = "test value"
}, 10000) // After 10 seconds, the object will get the property testValue

如果您在10秒钟过去之前单击该对象,它将没有该属性,但是在10秒钟之后单击该对象之后,您将在此处看到添加的属性。

尝试用以下代码替换您的控制器代码:

function MaterialinsController($scope) {
    var vm = this;

    $scope.$watch(function() { return vm.materialoffers }, function() {
        console.log(vm.materialoffers)
    });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在指令链接中访问控制器功能?

如何从页面控制器访问指令中的dom元素

在控制器中访问指令属性

AngularJS TypeScript控制器类指令中未定义作用域变量

从指令AngularJS更改控制器作用域值

AngularJS控制器作用域与指令作用域?

无法在指令linkFn中获取控制器参考

如何从AngularJS(没有$ parent)中的多级指令获取控制器作用域

在AngularJS指令中使用控制器中的ajax请求未定义作用域

访问指令的控制器的最佳模式

为什么我无法在指令控制器中访问$ scope.map?

如何从带参数的指令中调用角度控制器作用域函数?

当控制器中的值更改时,从指令中的控制器访问值

如何从控制器访问指令中的表单?

在控制器中注入指令时,指令/控制器作用域未定义

在指令中更改控制器作用域变量不会反映在控制器功能中

如何在父控制器中访问指令的对象?

监视工厂对象在自定义指令的控制器中不起作用

更改控制器初始化中的作用域不适用于指令

如何在角度指令中访问控制器

在控制器和postLink初始化之后,在指令中重置作用域变量;

在子指令中访问父指令的控制器作用域变量

如何从父指令/控制器访问指令范围?

无法访问指令控制器上的表单状态

访问指令模板中的外部控制器功能

如何从指令模板访问控制器中的功能

angularjs控制器访问指令作用域值

某些using指令在控制器中不起作用

从指令访问控制器中设置的变量