在离子框架/角JS控制器之间的数据共享 [英] Share data between controllers in Ionic Framework/Angular JS

查看:159
本文介绍了在离子框架/角JS控制器之间的数据共享的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

什么是共享数据的AngularJS使用服务控制器之间的最佳方式?

例如,当用户选择从℃的项目;离子列表> services.html ,我想的要显示在 service.html 所选项目的冠军。 {{} service.name} 被一些伪code,我写下来还挺拼出什么,我想要的目的。

services.html

 <离子列表>
        <离子项目NG重复= HREF =#/应用程序/服务/ {{service.id}}级=项目图标向右&GT服务服务;
            {{service.title}}
            < I类=图标离子字形右边的图标,附件>
                <跨度类=徽章徽章阳性> {{service.total}}< / SPAN>
            < I&GT /;
        < /离子项目>
    < /离子列表>

service.html

 <离子查看查看标题=播放列表>
    <离子含量>
        < H1> {{service.name}}< / H1>
    < /离子含量>
< /离子视图>

controller.js

  .controller('ServicesCtrl',[$范围,ServicesData功能($范围,ServicesData){
  $ scope.services = ServicesData.GetServices()
}]).controller('ServiceCtrl',函数($范围,$ stateParams){
});

services.js

  angular.module('starter.services',[])。服务(ServicesData,[功能(){    VAR servicesData = [
        {
            标题:汽车维修和保养,
            总:7,
            ID:1
        },
        {
            标题:清洁,
            总:1,
            ID:2
        },
        {
            标题:派送,仓储和移动',
            总:6,
            ID:3
        }
    ];    返回{
        GetServices:功能(){
            返回servicesData;
        },
        GetServiceById:功能(){
            //做的东西在这里得到由ID服务
        }
    }
}])


解决方案

\r
\r

angular.module('starter.services',[])\r
\r
。服务(ServicesData,[功能(){\r
\r
    VAR servicesData = [\r
        {\r
            标题:汽车维修和保养,\r
            总:7,\r
            ID:1\r
        },\r
        {\r
            标题:清洁,\r
            总:1,\r
            ID:2\r
        },\r
        {\r
            标题:派送,仓储和移动',\r
            总:6,\r
            ID:3\r
        }\r
    ];\r
\r
    返回{\r
        getSelected:功能(服务ID){\r
          VAR selectedService;\r
          \r
          servicesData.forEach(功能(服务){\r
            如果(service.id ===服务ID){\r
              selectedService =服务;\r
            }\r
          });\r
          \r
          返回返回selectedService;\r
        },\r
        getServices:功能(){\r
            返回servicesData;\r
        }\r
    }\r
}])\r
\r
.controller('ServicesCtrl',[$范围,ServicesData功能($范围,ServicesData){\r
  $ scope.services = ServicesData.setServices();\r
}])\r
\r
.controller('ServiceCtrl',函数($范围,$ stateParams){\r
  $ scope.service = ServicesData.getSelected($ stateParams.service); //帕拉姆名称应该是在路由配置定义\r
});

\r

<! - services.html - >\r
\r
    <离子列表>\r
        <离子项目NG重复= HREF =#/应用程序/服务/ {{service.id}}级=项目图标向右&GT服务服务;\r
            {{service.title}}\r
            < I类=图标离子字形右边的图标,附件>\r
                <跨度类=徽章徽章阳性> {{service.total}}< / SPAN>\r
            < I&GT /;\r
        < /离子项目>\r
    < /离子列表>\r
\r
&所述;! - service.html - >\r
\r
<离子查看查看标题=播放列表>\r
    <离子含量>\r
        < H1> {{service.name}}< / H1>\r
    < /离子含量>\r
< /离子视图>

\r

\r
\r

What is the best way of sharing data between controllers using services in AngularJS?

For example, when the user selects an item from the <ion-list> in services.html, I'd like the title of the selected item to be displayed in service.html. {{service.name}} is some pseudocode I've written down to kinda spell out what I am trying to achieve.

services.html

    <ion-list>
        <ion-item ng-repeat="service in services" href="#/app/services/{{service.id}}" class="item-icon-right">
            {{service.title}} 
            <i class="icon ion-chevron-right icon-accessory">
                <span class="badge badge-positive">{{service.total}}</span>
            </i>
        </ion-item>
    </ion-list>

service.html

<ion-view view-title="Playlist">
    <ion-content>
        <h1>{{service.name}}</h1>
    </ion-content>
</ion-view>

controller.js

.controller('ServicesCtrl', ["$scope", "ServicesData", function($scope, ServicesData) {
  $scope.services = ServicesData.GetServices()
}])

.controller('ServiceCtrl', function($scope, $stateParams) {
});

services.js

angular.module('starter.services', [])

.service("ServicesData", [function () {

    var servicesData = [
        { 
            title: 'Car Repair and Maintenance', 
            total: 7, 
            id: 1 
        },
        { 
            title: 'Cleaning', 
            total: 1, 
            id: 2 
        },
        { 
            title: 'Delivery, Storage and Moving', 
            total: 6, 
            id: 3 
        }
    ];

    return {
        GetServices: function () {
            return servicesData;
        },
        GetServiceById: function () {
            // do stuff here to get the service by id
        }
    }
}])

解决方案

angular.module('starter.services', [])

.service("ServicesData", [function () {

    var servicesData = [
        { 
            title: 'Car Repair and Maintenance', 
            total: 7, 
            id: 1 
        },
        { 
            title: 'Cleaning', 
            total: 1, 
            id: 2 
        },
        { 
            title: 'Delivery, Storage and Moving', 
            total: 6, 
            id: 3 
        }
    ];

    return {
        getSelected: function(serviceId) {
          var selectedService;
          
          servicesData.forEach(function(service) {
            if(service.id === serviceId) {
              selectedService = service;
            }
          });
          
          return return selectedService;
        },
        getServices: function () {
            return servicesData;
        }
    }
}])

.controller('ServicesCtrl', ["$scope", "ServicesData", function($scope, ServicesData) {
  $scope.services = ServicesData.setServices();
}])

.controller('ServiceCtrl', function($scope, $stateParams) {
  $scope.service = ServicesData.getSelected($stateParams.service);//the param name should be defined in the route config
});

<!--services.html-->

    <ion-list>
        <ion-item ng-repeat="service in services" href="#/app/services/{{service.id}}" class="item-icon-right">
            {{service.title}} 
            <i class="icon ion-chevron-right icon-accessory">
                <span class="badge badge-positive">{{service.total}}</span>
            </i>
        </ion-item>
    </ion-list>

<!--service.html-->

<ion-view view-title="Playlist">
    <ion-content>
        <h1>{{service.name}}</h1>
    </ion-content>
</ion-view>

这篇关于在离子框架/角JS控制器之间的数据共享的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆