如何将变量放在Angular指令之外?

14 浏览
0 Comments

如何将变量放在Angular指令之外?

Ng-table(ng-table网站)可以将$data变量从指令中放置到'user'域之外。据我所知,只要它发生在< table ng-table >标签内,我可以随意使用和滥用这个$data变量,就像这样:

< table ng-table="vm.tableParams" class="table" show-filter="true">

< tr ng-repeat="user in $data"> <---- 这个$data是从哪里来的?

< /tr>

< /table>

我想用我的指令做同样的事情,所以我做了这个:

[ JS ]

angular.module('app',[])

  .controller('Controller',['$scope',function($scope){

      $scope.variable = “一些随机变量”;

  }])

  .directive('myTable',function(){

   返回{

      restrict:'E',

      transclude:true,

      templateUrl:'my-table.html',

        controller:function($scope){

        $scope.foo = “你好世界”;

     }

 };

});

[ HTML my-table.html ]

< /code>

[ HTML index.html ]

< my-table ng-model="variable">

     {{ foo }}

< /my-table>

它可以工作!工作示例,

但是当我在指令中添加scope时:

返回{

  restrict:'E',

  transclude:true,

  scope:{

    ngModel:“=”

  },

  templateUrl:'my-table.html',

  controller:function($scope){

    $scope.foo = “你好世界”;

 }

}

它会破坏foo变量,所以它不再工作。

我只想让指令内部的foo变量暴露在外部,这样我就可以像上面的ng-table示例一样在index.html中使用它。如何实现这一点?

0
0 Comments

问题的原因是想要在Angular指令之外使用变量,但在代码中没有正确地将变量添加到指令的作用域(scope)属性中。

解决方法是在指令的scope属性中添加变量。在代码示例中,添加了一个名为foo的变量到scope中,以便在指令内部使用。通过将foo的值设置为与传递给指令的bar变量相等,可以在指令内部使用bar的值。

然后,在模板中使用{{ foo }}来显示变量的值。在示例中,将

{{ foo }}

放置在指令内部,以显示foo变量的值。

可以通过以下链接查看示例代码的演示:[https://plnkr.co/edit/VqmaxG2fIFO4k9JrQYRs?p=preview](https://plnkr.co/edit/VqmaxG2fIFO4k9JrQYRs?p=preview)

作者在最后提到无法让

{{ foo }}

正常工作,请检查链接:[plnkr.co/edit/VqmaxG2fIFO4k9JrQYRs?p=preview](https://plnkr.co/edit/VqmaxG2fIFO4k9JrQYRs?p=preview)

0