如何在使用append()方法添加的html元素中显示控制器的值?

时间:2017-08-02 12:00:17

标签: javascript jquery html angularjs dom

我会感激任何帮助。我的问题:在我看来,我无法从$scope.info显示价值。我没有直接访问html,所以我只能通过js更改DOM。 我创建了新元素,并使用append()方法

将其添加到DOM中
$scope.info = {
  clicks: 15862,
  spent: '$124',
  created: '04/08/2017',
  author: 'John Kovalenko',
  name: 'Advertise US'
};

var info = document.createElement('div');
info = angular.element(info).attr({
  'ng-bind': 'info',
  'class': 'statistic-info'
});
angular.element(infoContainer).append(info[0]);

我在这里创建了一个例子。 http://jsfiddle.net/ADukg/13598/

我做错了什么?谢谢

2 个答案:

答案 0 :(得分:4)

手动注入任何使用指令

的内容时,必须使用$compile
  var info = angular.element('<div>').attr({
    'ng-bind': 'info.author',
    'class': 'statistic-info'
  });

  info = $compile(info)($scope);

  angular.element(infoContainer).append(info);

请务必在任何地方注入$compile

DEMO

答案 1 :(得分:2)

最简单的答案是在附加数据之前将数据添加到HTML内容中。由于您有一个对象,我在下面的代码段中提供了其中一个属性。

正在发生的事情是您的页面加载,摘要周期已经完成。你要附加的只是纯文本,因此不进行插值。我提供的这种方法不会提供双向绑定。如果需要,您应该使用指令。

var infoTwo = '<div><p>' + $scope.info.clicks + '</p></div>';

那就是说,charlieftl有最好的答案。