javascript - Angular.js 指令与加载数据的两种方式绑定(bind)

标签 javascript ajax angularjs angularjs-directive angularjs-ng-repeat

我正在尝试创建一个从其他地方加载数据的指令。

这是我的指令:

(function() {
    var module = angular.module('HomeModule', ['StorageService']);
    module.directive("home", ['storage',
        function(storage) {
            return {
                restrict: 'A',
                templateUrl: "modules/home/directives/home-directive.html",
                controllerAs: "mediaCtrl",
                controller: function() {
                    var ctrl = this;
                    ctrl.medias = [];
                    storage.get_all(function(items) {
                        var tmp = [];
                        for (id in items) {
                            tmp.push(items[id]);
                        }
                        ctrl.medias = tmp;
                    });

                    // setTimeout(function() {
                    //     ctrl.medias = [{name: "test"}];
                    // }, 3000);
                }
            };
        }
    ]);
})();

还有我的模板:

<input type="search" ng-model="search.name" placeholder="filter medias..." />
<ul>
    <li ng-repeat="media in mediaCtrl.medias | filter:search" >
        {{media.name}}
    </li>
</ul>

我不明白的是,只要我在过滤器中输入内容,它就会更新,然后显示数据。我什至尝试使用 setTimeout 来查看问题是否出在我的自定义服务上,但不是。

最佳答案

您可以将数据更新函数包装在 $scope.$apply() 调用中,如下所示:

storage.get_all(function(items) {
    $scope.$apply(function () {
        var tmp = [];
        for (id in items) {
            tmp.push(items[id]);
        }
        ctrl.medias = tmp;
    });

});

关于javascript - Angular.js 指令与加载数据的两种方式绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25214384/

相关文章:

angularjs - 如何在 css 中使用响应式设置中心图像的位置?

javascript - 你可以在没有指令的情况下在 ngModel 上动态渲染 HTML 吗?

javascript - 在 Javascript 中构建复杂的 JSON

javascript - ng-change 不适用于单选按钮

javascript - 多个模块上的 webpack IgnorePlugin()

javascript - 我可以 "cancel"更新面板中发生的长时间运行的进程吗?

javascript - AJAX请求中使用或不使用 'this'的区别

javascript - 名为 'click' 的 Jquery Ajax 在未实现接口(interface) HTMLElement 的对象上调用

javascript - ActiveXObject 行数计数器

javascript - 如何使 RNRF 中的自定义导航栏透明