AngularJS指令 - 如何在异步数据负载后刷新模板



i分叉并编辑了一个问题

我要做的是在数据加载后获取选择元素(组合框)以更新/填充,但是有些不对劲。我检索数据,并且在选择元素的范围上,但是模板没有令人耳目一新以显示数据。有人可以看我,告诉我为什么模板不会刷新?

非常感谢。

指令:

app.directive('walkmap', function() { 
  return {
    restrict: 'A',
    transclude: true,
    scope: { walks: '=walkmap' },
    template: '<select data-ng-options="w.postalCode for w in walks"></select>',
    link: function(scope, element, attrs)
    {
      scope.$watch('walks', function (walks) {
                scope.walks = walks;
                console.log('watch triggered');
                console.log(scope.walks);

            });
    }
  };
});

index.html:

<body ng-controller="MainCtrl">
    <h1>The Walks Data:</h1>
    <div walkmap="store.walks"></div>
  </body>

解决方案:

  • 您不需要其他$手表,scope: { walks: '=walkmap' }已经在看。
  • 使用ngOptions时,您也必须使用ngModel
  • angularjs ng-options不起作用
  • 使用Angularjs的NG-Options使用SELECT

这是一个plunker:

app.directive('walkmap', function() { 
  return {
    restrict: 'A',
    transclude: true,
    scope: { walks: '=walkmap' },
    template: '<select ng-model="selected" data-ng-options="w.postalCode for w in walks"></select>'
  };
});

问题是您的模板。您尚未定义一个非常重要的模型

这应该有效。

<select data-ng-model="w" data-ng-options="w.postalCode for w in walks"></select>

最新更新