Jquery Angularjs如何使用来自不同控制器的数据附加ng重复

Jquery Angularjs如何使用来自不同控制器的数据附加ng重复,jquery,angularjs,Jquery,Angularjs,我有两个控制器,pageController.js包含链接列表和表thead和空tbody,articleController.js带有一个指令,当在pagesController的ad内单击链接时,该指令会将数据附加到tbody 这是html文件 <div ng-controller='pageController as pg'> <ul> <li> /* This table is dynamically ap

我有两个控制器,pageController.js包含链接列表和表thead和空tbody,articleController.js带有一个指令,当在pagesController的ad内单击链接时,该指令会将数据附加到tbody

这是html文件

 <div ng-controller='pageController as pg'>
    <ul>
       <li>
           /* This table is dynamically appended */
          <a href="" sample-directive>Click Me</a> 
          <table>
             <thead>
                <tr>
                 <th>Field1</th>
                 <th>Field2</th>
               </tr> 
            </thead>
            <tbody> 
           </tbody>
        </table>
       </li>
    </ul>
</div>

  • /*此表是动态追加的*/ 字段1 字段2
articleController.js

此控制器应填充表tbody

myApp.directive("sampleDirective", function($compile, $parse, $rootScope) {
        return {

            scope: {
              id: "=",
              status: "@"
            },

            link: function($scope, $element, $attrs) {

                var clickingCallback = function() {

                  var $elem = $("#"+id);
                  $scope.articleData = [{"id":1076,"article_master_id":24,"article_name":"Testtest"},{"id":1077,"article_master_id":24,"article_name":"test2"},{"id":1078,"article_master_id":24,"article_name":"test3"}]; /* some data it has */


                   var output = angular.element("<tr ng-repeat='fld in entryC.articleData' ng-show='entryC.articleData.length'>"+
                      "<td>{{ fld.article_master_id }}</td>"+
                      "<td>{{ fld.article_name }}</td>"+
                      "<td>{{ fld.id }} {{ entryC.articleData }}</td></tr>");


                $elem.empty();
                $elem.append($compile(output)($scope));

               }

             $element.bind('click', clickingCallback);

           }
}
myApp.directive(“sampleDirective”,函数($compile,$parse,$rootScope){
返回{
范围:{
id:“=”,
状态:“@”
},
链接:函数($scope、$element、$attrs){
var clickingCallback=函数(){
变量$elem=$(“#”+id);
$scope.articleData=[{“id”:1076,“article_master_id”:24,“article_name”:“Testtest”},{“id”:1077,“article_master_id”:24,“article_name”:“test2”},{“id”:1078,“article_master_id”:24,“article_name”:“test3”};/*它拥有的一些数据*/
变量输出=角度。元素(“”)+
“{{fld.article_master_id}”+
“{fld.article_name}”+
“{{fld.id}{{entryC.articleData}}”);
$elem.empty();
$elem.append($compile(output)($scope));
}
$element.bind('click',clickingCallback);
}
}
  • 标记属于pageController,单击此指令时,它将执行articleController.js下的链接回调函数

    我能够触发指令的回调函数, 问题是
    ng repeat
    无法执行,并且没有错误


    非常感谢您提供一个工作示例,

    基本上您的ng repeat不起作用,因为您的模板是在摘要周期完成之前编译的

    当您从run块手动编译和链接元素时 已为元素设置$watch处理程序,但$digest 阶段尚未发生。在$digest阶段中,作用域 检查所有$watch表达式并执行它们的 相应的手表处理器

    以下是一个工作示例:-

    var-app=angular.module(“myApp”,[]);
    app.controller(“myCtrl”,函数($scope){
    })
    .directive(“sampleDirective”,函数($compile、$parse、$rootScope、$timeout){
    返回{
    范围:{
    id:“@appenddiv”,
    状态:“@”
    },
    链接:函数($scope、$element、$attrs){
    var clickingCallback=函数(){
    var$elem=angular.element(document.querySelector(“#”+$scope.id));
    $scope.entryC={};
    $scope.entryC.articleData=[{
    “id”:1076,
    “物品主id”:24,
    “物品名称”:“测试”
    }, {
    “id”:1077,
    “物品主id”:24,
    “物品名称”:“测试2”
    }, {
    “id”:1078,
    “物品主id”:24,
    “物品名称”:“test3”
    }]/*它有一些数据*/
    var output=angular.element(“+”{fld.article_master_id}}”+“{fld.article_name}}”+“{fld.id}}}{{entryC.articleData}”);
    $elem.empty();
    变量内容=$compile(output)($scope);
    $timeout(函数(){
    $elem.replacetwith(内容);
    });
    };
    $element.bind('click',clickingCallback);
    }
    };
    });
    
    
    • /*此表是动态追加的*/ sdfsdfsfd 字段1 字段2

    这是否意味着我只需要一次编译就可以让它正常工作?谢谢,!