scope - angularjs:从外部范围访问内部范围

标签 scope angularjs

我正在尝试从 angularjs 应用程序中的子 Controller 中的父 Controller 移动位,以免过多地污染主 Controller 。
这是一个简化的 fiddle :http://jsfiddle.net/terebentina/5RMPV/
因此,当我单击更改按钮时,第三个字母应更改为“X”。
最初 item_change() 函数在主 Controller 内部并且正在执行 $scope.items[idx] = 'X'这工作得很好。但是,由于我将它移到了 ItemCtrl 中,所以我不知道如何为第三个元素访问它。

任何帮助将非常感激。

最佳答案

将内容移出主 Controller 的一种方法是在服务或工厂内的 Controller 之间共享和更改所有数据(在 this article 中有很好的描述)。

这是 updated fiddle .您只需要注入(inject) itemsService进入您想要访问项目数据的任何 Controller 。

angular.module('test', [])
    .service('itemsService', function(){
        var items = ['A', 'B', 'C', 'D'];

        return{
            getItems: function(){
                return items;
            },
            changeItem: function(index, value){
                items[index] = value;
            }
        }
    })
    .controller('MainCtrl', function($scope, itemsService) {
        $scope.items = itemsService.getItems();       

        $scope.change = function(idx) {
            itemsService.changeItem(idx, 'X');
        }

    })

关于scope - angularjs:从外部范围访问内部范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12321586/

相关文章:

python - 我应该如何从函数内修改全局变量?

angularjs - 为什么 Scope.$apply() 调用 $rootScope.$digest() 而不是 this.$digest()?

javascript - 带有 ng-if 条件的嵌套 ng-repeat 用于跳过嵌套数组

AngularJS $resource 自定义 header

javascript - 遍历 Javascript 对象并计数

AngularJS passportJS 用户在页面重新加载后注销

c++ - struct Node* 和 Node* 在函数调用上有什么区别?

javascript - 无法通过 JavaScript 访问变量 - 范围错误?

r - R语言中的变量冲突

javascript - 将变量传递到数组中间字符串