AngularJS:使用控制器和ng-repeat在div上重新加载数据

纳赛尔

我是Angular JS的新手,正在学习它。我有一个div并使用以下代码在控制器启动时从json加载数据,但我想在执行特定操作后更改json对象时再次重新加载数据。

index.html

!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html ng-app="ezpf" xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <script src="lib/angular.js"></script>
        <script src="lib/jquery.min.js"></script>
    </head>
    <body onload="EZPF.Application.initialize()">
        <div id="btn-import" class="my-button button-small" onClick="EZPF.Application.openFile(this)">
                    <span class="button-title">Import</span>
                    <span class="button-help">This button will do something                         else.</span>                        
        </div>
        <div class="page" id="pro" ng-controller="ProductsListCtrl as store">
             <div ng-repeat="product in store.products.Products">                     
                  {{product.Title}}
             </div>
        </div>
    </body>
</html>

myAngular.js

(function()
{
    var app = angular.module('ezpf', []);
    app.controller('ProductsListCtrl',['$scope', function($scope)
    {
        this.products = EZPF.Application.getProducts();     
        $scope.reload = function()        
        {           
            $scope.products = EZPF.Application.getProducts();           
        };
    }]);
})();

在下面的javascript文件中,我将打开JSON文件并使用新数据重新加载产品对象。用新的JSON文件内容更新后,我必须重新加载数据。我试图从控制器调用重载,但无法正常工作。请帮助我,在此先感谢。

application.js

var EZPF;
if (!EZPF) 
    EZPF = {};
if (!EZPF.Application) 
    EZPF.Application = {};


EZPF.Application = 
{    
    products: [],
    getProducts: function()
    {
        if (this.products.length == 0) 
        {
            this.products = 
            {
                "Products": [
                {
                     "Title": "default name"
                     ....
                }]
            }
        }
        return this.products;
    },
    openFile: function()
    {
        var docsDir = air.File.documentsDirectory;
        try 
        {
            var jsonFilter = new air.FileFilter("JSON Files", "*.json");
            docsDir.browseForOpenMultiple("Select JSON Files", [jsonFilter]);
            docsDir.addEventListener(air.FileListEvent.SELECT_MULTIPLE, filesSelected);
        } 
        catch (error) 
        {
            air.trace("Failed:", error.message)
        }

        function filesSelected(event)
        {
            air.trace(event.files[0].nativePath);
            var myFile = new window.runtime.flash.filesystem.File();
            var file = myFile.resolvePath(event.files[0].nativePath);
            var fileStream = new air.FileStream();
            fileStream.open(file, air.FileMode.READ);
            this.products = fileStream.readMultiByte(fileStream.bytesAvailable, air.File.systemCharset);
            fileStream.close();
            air.trace(products);
            $('#pro').reload();
        }
    }
};
Devqon

您正在使用controller asng-controller="ProductsListCtrl as store")语法,因此必须将变量分配给控制器本身(this),而不是$scope

var vm = this;

vm.products = EZPF.Application.getProducts();     
vm.reload = function()        
{           
    vm.products = EZPF.Application.getProducts();           
};

要重新加载数据:

<div class="page" id="pro" ng-controller="ProductsListCtrl as store">
    <div ng-repeat="product in store.products.Products">                     
        {{product.Title}}
    </div>
    <!-- Button for reloading the data -->
    <button ng-click="store.reload()">Reload Data</button>
</div>

JSFIDDLE

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AngularJS单控制器,用于ng-repeat-start和ng-repeat-end

来自分类Dev

AngularJS,使用控制器数据和控制器数据

来自分类Dev

AngularJS:控制器中的$ watch,查看使用ng-repeat创建的属性的更改

来自分类Dev

AngularJs:使用两个不同的控制器进行ng-repeat搜索

来自分类Dev

AngularJS:在ng-repeat中调用控制器函数

来自分类Dev

AngularJS:在ng-repeat中调用控制器函数

来自分类Dev

angularjs ng-if加载时间早于控制器

来自分类Dev

如何通过Angularjs的ng-click使用控制器显示工厂中的数据

来自分类Dev

重新加载AngularJS控制器

来自分类Dev

ng-repeat和“控制器为”

来自分类Dev

AngularJS使用promise和indexeddb-在页面上将内容加载到控制器后

来自分类Dev

如何在angularjs中使用服务在控制器之间共享和更新数据

来自分类Dev

无法使用angularjs和ionic将数据从控制器拉到视图

来自分类Dev

AngularJS:延迟加载控制器和内容

来自分类Dev

AngularJS控制器无法加载数据

来自分类Dev

AngularJS:在指令和外部控制器之间共享数据

来自分类Dev

Yeoman生成angularjs ng-repeat不显示来自控制器的数据

来自分类Dev

AngularJS控制器数据

来自分类Dev

在加载Angularjs上从控制器初始化所有ng-model

来自分类Dev

在加载Angularjs上从控制器初始化所有ng-model

来自分类Dev

使用ng-repeat时,角$ parent和$ parent。$ parent是同一个控制器

来自分类Dev

在Angularjs控制器上使用Phonegap事件

来自分类Dev

angularjs:控制器不使用服务共享数据

来自分类Dev

使用AngularJS工厂在控制器之间共享数据

来自分类Dev

AngularJS $ http使用数据导入控制器

来自分类Dev

使用服务在控制器之间共享数据(AngularJS)

来自分类Dev

AngularJS使用$ broadcast帮助在控制器之间共享数据

来自分类Dev

如何使用angularjs显示从控制器返回的json数据

来自分类Dev

如何使用angularjs从Web api控制器返回数据?

Related 相关文章

  1. 1

    AngularJS单控制器,用于ng-repeat-start和ng-repeat-end

  2. 2

    AngularJS,使用控制器数据和控制器数据

  3. 3

    AngularJS:控制器中的$ watch,查看使用ng-repeat创建的属性的更改

  4. 4

    AngularJs:使用两个不同的控制器进行ng-repeat搜索

  5. 5

    AngularJS:在ng-repeat中调用控制器函数

  6. 6

    AngularJS:在ng-repeat中调用控制器函数

  7. 7

    angularjs ng-if加载时间早于控制器

  8. 8

    如何通过Angularjs的ng-click使用控制器显示工厂中的数据

  9. 9

    重新加载AngularJS控制器

  10. 10

    ng-repeat和“控制器为”

  11. 11

    AngularJS使用promise和indexeddb-在页面上将内容加载到控制器后

  12. 12

    如何在angularjs中使用服务在控制器之间共享和更新数据

  13. 13

    无法使用angularjs和ionic将数据从控制器拉到视图

  14. 14

    AngularJS:延迟加载控制器和内容

  15. 15

    AngularJS控制器无法加载数据

  16. 16

    AngularJS:在指令和外部控制器之间共享数据

  17. 17

    Yeoman生成angularjs ng-repeat不显示来自控制器的数据

  18. 18

    AngularJS控制器数据

  19. 19

    在加载Angularjs上从控制器初始化所有ng-model

  20. 20

    在加载Angularjs上从控制器初始化所有ng-model

  21. 21

    使用ng-repeat时,角$ parent和$ parent。$ parent是同一个控制器

  22. 22

    在Angularjs控制器上使用Phonegap事件

  23. 23

    angularjs:控制器不使用服务共享数据

  24. 24

    使用AngularJS工厂在控制器之间共享数据

  25. 25

    AngularJS $ http使用数据导入控制器

  26. 26

    使用服务在控制器之间共享数据(AngularJS)

  27. 27

    AngularJS使用$ broadcast帮助在控制器之间共享数据

  28. 28

    如何使用angularjs显示从控制器返回的json数据

  29. 29

    如何使用angularjs从Web api控制器返回数据?

热门标签

归档