Javascript 在AngularJS中将对象传递给指令时没有数据

Javascript 在AngularJS中将对象传递给指令时没有数据,javascript,angularjs,Javascript,Angularjs,如何将对象传递给指令?我试图访问指令范围内的用户,但未成功。这就是我尝试过的: 在控制器中,我将用户数组设置为一个作用域: $scope.users = payload.data.results; 然后我想将该对象作为属性传递给我的指令: <display test123='users'></display> 但是,当我试图控制台out scope.data时,我得到的是未定义的。似乎是payload.data.results是AJAX调用的结果。在AJAX调用成功之

如何将对象传递给指令?我试图访问指令范围内的用户,但未成功。这就是我尝试过的:

在控制器中,我将用户数组设置为一个作用域:

$scope.users = payload.data.results;
然后我想将该对象作为属性传递给我的指令:

<display test123='users'></display>
但是,当我试图控制台out scope.data时,我得到的是未定义的。

似乎是payload.data.results是AJAX调用的结果。在AJAX调用成功之前,正在编译指令。因此,您需要在控制器中注册一个手表,以便在通过AJAX调用更新数据时获得值

function ListDisplayLinkFunc(scope, elem, attr) {
    console.log(scope.test123);

    scope.$watch('test123', function(newValue) {
         if (newValue) {
            console.log('Updated users in the directive', newValue);
         }
    });
}
您正在使用controllerAs:'vm'和bindToController:true,这意味着您在作用域中传递的值被分配给一个名为vm的变量

试试这个:

function ListDisplayController($scope) {
  var vm = this;
  console.log(vm.test123);

}
要在link函数中使用bindToController进行处理,可以执行以下操作

function ListDisplayLinkFunc(scope, elem, attr) {

  console.log(scope.vm.test123);
}

您可以在这个插件中看到它:

我认为数据与html5属性有关。尝试使用其他名称。它可能会有所帮助。谢谢@RIYAJKHAN,我已将其更改为test123,但仍然没有定义我们能得到样本plunker吗?有效载荷在payload.data.results中是一个承诺吗?请分享我们的dir defIt看起来像是@valepu和Shashank Agrawal答案的组合,该怎么办???这两个都是问题所在,首先数据没有完成加载,然后controllerAs将其分配给一个名为vm的变量。
function ListDisplayLinkFunc(scope, elem, attr) {

  console.log(scope.vm.test123);
}