2016-05-30 14 views
1

jqueryを使用して配列値に基づいて動的divを作成しました。それが正常に動作し、次は、jqueryのためのコードである角度js動的div作成

$(document).ready(function() { 
    var i = 1; 
    var arr = ["a", "b", "c"]; 
    /*arr=;*/ 
    //arr = doc.slice(); 

    $(window).load(function() { 
     alert(arr[1] + ":" + arr.length); 
     for (i = 0; i < arr.length; i++) { 
      var ele = document.createElement("div"); 
      ele.setAttribute("id", "child" + i); 
      ele.setAttribute("class", "span4 greenDark"); 
      ele.innerHTML = '<object type="text/html" data="iindex.html" ></object>'; 
      document.getElementById("mydiv").appendChild(ele); 
     } 
    }); 
}); 

しかし、私は、角のjs NG-initメソッドの呼び出しでこれと同じ機能を実行する必要があります。しかし、角度コードdidintは任意のdivを作成します。 私は次のコードを試しました

var arr = ["a", "b", "c"]; 
alert("load" + arr); 

for (i = 0; i < arr.length; i++) { 
    alert("load" + arr[i]); 
    var ele = document.createElement("div"); 
    ele.setAttribute("id", "child" + i); 
    ele.setAttribute("class", "span4 greenDark"); 
    ele.innerHTML = '<object type="text/html" data="iindex.html" ></object>'; 

    // angular.element(document.getElementById("mydiv").appendChild(ele)); 
    angular.element(document.getElementById('mydiv')).append($compile("<div><button class='btn btn-default' data-alert=" + scope.count + ">Show alert #" + scope.count + "</button></div>")(scope)); 
} 

私は助けが必要です。

+0

は、このHTMLを返す関数を作成します。この機能のディレクティブの記述方法は –

+0

です。 – jicks

答えて

1
<div my-directive myarray="myarray"></div> 



    angular.module('sampleApp', []) 
    .controller('myCtrl', function($scope) { 
    $scope.myarray = ["a","b","c"]; 
    }) 
    .directive("myDirective", function($compile) { 
    return { 
     template: "<div></div>", 
     restrict: 'EA', 
     scope: { 
     myarray: '=' 
     }, 
     link: function(scope, element, attrs) { 
     var template='<div ng-repeat="item in myarray"><button class="btn btn-default" >item#{{$index}}</button></div>'; 

      var linkFn = $compile(template); 
      var content = linkFn(scope); 
      element.append(content); 
     } 

    } 
    }); 

チェックアウトフィドルhttps://jsfiddle.net/ebinmanuval/rpjacmy2/3/

0

Controller

function initButton() { 

    var arr = ['a', 'b', 'c']; 
    var html = ''; 

    for (var i = 0, length = arr.length; i < length; i++) { 
    html += "<div><button class='btn btn-default' data-alert=" + i + ">Show alert #" +i"</button></div>"; 
    } 

    return html; 

} 


$scope.buttonHTML = initButton(); 

View

<div ng-bind-html="buttonHTML"></div> 
+0

には、角殺菌剤を含めることを忘れないでください。 –