javascript - Angular 追加 ng-repeat 不起作用

标签 javascript html angularjs ionic-framework

我正在尝试将带有 ng-repeat 的 ionic 列表附加到元素中

<ion-list class="search-list" ><li>#</li>'  +
'<li ng-repeat="item in vm.search_list"><a ng-click="scrollTo(item)">{{item}}</a></li>' +
'</ion-list>'

tag.search.directive.js

link: function($scope, $element, $attrs, $ctrl) {
  var ele = $element[0];
  var myElemenet = angular.element($element[0])
  var a = angular.element('<ion-list class="search-list" ><li>#</li>'  +
              '<li ng-repeat="item in vm.search_list"><a ng-click="scrollTo(item)">{{item}}</a></li>' +
              '</ion-list>');
              myElemenet.append(a);
 }

但是 ng-repeat 不起作用,它在附加 ion-list 后显示 {{item}} ,有人知道问题是什么吗?

enter image description here

更新代码:

angular.module('main').directive('dtTagSearch', function($window, 
$ionicScrollDelegate) {
return {
scope: {
data: '=data',
},
link: function($scope, $element, $attrs, $ctrl, $compile) {
  var ele = $element[0];
  var myElemenet = angular.element($element[0])
  console.log($scope.data);
  var a = angular.element('<ion-list class="search-list" ><li>#</li>'  +
              '<li ng-repeat="item in vm.search_list"><a ng-
  click="scrollTo(item)">{{item}}</a></li>' +
              '</ion-list>');
              myElemenet.append($compile(a)($scope));

 }

它给我一个错误$compile is not a function

最佳答案

您应该使用$compile将新添加的元素与当前范围绑定(bind)。

myElemenet.append($compile(a)($scope));
<小时/>

对于指令,在定义它的位置注入(inject) $compile (不在链接函数中):

angular.module('main').directive('dtTagSearch', function($compile, $window, $ionicScrollDelegate) 

引用下面的例子:

angular.module("app", [])
  .controller("myCtrl", function($scope, $compile) {
    $scope.data = [1,2,3,4];
    var test = angular.element('<div ng-repeat="item in data">{{item}}</div>');
    angular.element('#test').append($compile(test)($scope));
  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<div ng-app="app" ng-controller="myCtrl">
  <div id="test">
    {{data}}
  </div>
</div>

关于javascript - Angular 追加 ng-repeat 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45002965/

相关文章:

javascript - 如何扩展 Joi 模式?

html - 在文本内容和我的页脚栏之间提供

javascript - 无法加载脚本 HTML 和 javascript

javascript - 通过 AngularJS 将文本框元素动态添加到表单

javascript - Ng-Repeat 中的 Angular 设置类

javascript - Webpack2 + Typescript2 动态导入json失败

javascript - 私有(private)函数的setInterval

javascript - 由于 const 在 JavaScript 中创建不可变数组没有用(我不知道确切原因),那么创建不可变数组的最佳方法是什么?

css - HTML <a> 标签定位和高度

javascript - 使用 ui-select-match 选择多个条目