调用另一个指令的AngularJS指令没有正确地传递数据以使用$ compile

时间:2017-07-14 17:13:18

标签: javascript angularjs angularjs-directive angularjs-scope

我正在尝试使用数据驱动指令动态水合数据,并尝试使用$ compile来显示特定数据。

该指令正确调用另一个指令,但它没有传递变量

var fred = [];
$scope.fred = {name:'fred'}

$scope.fred = {name:'fred'}
fred.push('<my-directive data={{fred}} > duh</my-directive>')

$("#directives").append($compile(x)($scope))

另一个指令有

template: '<h1>Whats Up {{fred}}</h1>',

忽略&#34;测试&#34;指令

这是一个jsfiddle http://jsfiddle.net/sm98xx55/

如何将数据从函数ctrl传递并呈现给指令&#34; myDirective&#34; ?

1 个答案:

答案 0 :(得分:1)

工作小提琴 - http://jsfiddle.net/es6kppzp/1/

您在text scope内添加了myDirective这是一个未知属性(意味着您没有通过)。模板<h1>Whats Up {{fred}}</h1>应为<h1>Whats Up {{data}}</h1>。最后在$scope中传递正确的controller值,以便它将传递给您的指令并按预期绑定。检查一下,

var module = angular.module('testApp', [])
  .directive('myDirective', function($compile) {
    return {
      restrict: 'E',
      scope: {
        data: '@'
      },
      template: '<h1>Whats Up {{data}}</h1>',
      controller: function($scope, $element) {

      }
    };
  });

function crtl($scope, $compile) {
  var vm = this;
  var fred = [];
  $scope.host = "jimmy";
  $scope.fred = {name:'fred'}
  fred.push('<my-directive data={{fred.name}}> duh</my-directive>')
  fred.push('<my-directive data={{host}}> monkey </my-directive>')
  fred.push('<my-directive data={{host}}> brains </my-directive>')
  fred.push('<my-directive data={{host}}> </my-directive>')
  fred.forEach(function(x) {
    //console.log(x)
    $("#directives").append($compile(x)($scope));
  });
}