Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 对角度范围感到困惑。为什么这不能像预期的那样发挥作用?_Angularjs_Angularjs Directive_Angularjs Scope - Fatal编程技术网

Angularjs 对角度范围感到困惑。为什么这不能像预期的那样发挥作用?

Angularjs 对角度范围感到困惑。为什么这不能像预期的那样发挥作用?,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,这很令人困惑。。这是一张小提琴手的照片 Angular.copy适用于此示例,但会使用hot Towers datacontext.lookup.setLookups(true)方法导致(RangeError:超过最大调用堆栈大小)。知道为什么吗 从列表中选择U3,然后单击添加。 U3将从选择列表(下拉列表)中删除并添加到选择列表中。 U3将从其他下拉列表中删除 因此,它在全球范围内分享我的“单位”列表,以及我实际项目中的一些方法 如何将列表复制到特定控制器实例的包含范围中 我正在使用带有bre

这很令人困惑。。这是一张小提琴手的照片

Angular.copy适用于此示例,但会使用hot Towers datacontext.lookup.setLookups(true)方法导致(RangeError:超过最大调用堆栈大小)。知道为什么吗

从列表中选择U3,然后单击添加。 U3将从选择列表(下拉列表)中删除并添加到选择列表中。 U3将从其他下拉列表中删除

因此,它在全球范围内分享我的“单位”列表,以及我实际项目中的一些方法

如何将列表复制到特定控制器实例的包含范围中

我正在使用带有breeze.js的hottower.Angular模板。我想知道是否正在共享对缓存的查找值的引用。以下是实际获取单位列表数据的方法

 <!-- the actual item detail controller -->
  (function () {
  'use strict';

  var controllerId = 'itemdetail';

   angular.module('app').controller(controllerId,
    ['common', 'datacontext', itemdetail]);

  function itemdetail(common, datacontext) {
    var vm = this;
    var getLogFn = common.logger.getLogFn;
    var log = getLogFn(controllerId);


    vm.units = [];
    vm.selectedUnit = undefined;
    vm.selectedUnits = [];


    activate();

    function activate() {
        common.activateController([initLookupValues()], controllerId)
            .then(function () {
               // log('Activated Controller' + controllerId,controllerId,true);
            });
    }


    function initLookupValues() {
        vm.units = datacontext.lookup.refreshUnitLookupCachedData(true);
    }
  }
})();       
 <!-- FROM repository.lookup.js ---->
    function refreshUnitLookupCachedData(includeNullo) {
        var predicate = breeze.Predicate.create('isLookUpValue', '==', true);

        if (includeNullo) {
            predicate = predicate.or(this._predicates.isNullo);
        }

        return this.lookupCachedData.units = this._getAllLocal(entityNames.unit, 'displayOrder', predicate);
    }

<!-- FROM repository.abstract.js -->

    function _getAllLocal(resource, ordering, predicate) {
        return EntityQuery.from(resource)
            .orderBy(ordering)
            .where(predicate)
            .using(this.manager)
            .executeLocally();
    }

(功能(){
"严格使用",;
var controllerId='itemdetail';
角度。模块('app')。控制器(controllerId,
['common','datacontext',itemdetail]);
函数itemdetail(公共、数据上下文){
var vm=这个;
var getLogFn=common.logger.getLogFn;
var log=getLogFn(controllerId);
vm.units=[];
vm.selectedUnit=未定义;
vm.selectedUnits=[];
激活();
函数激活(){
common.activateController([initLookupValues()],controllerId)
.然后(函数(){
//日志(“激活的控制器”+控制器ID,控制器ID,真);
});
}
函数initLookupValues(){
vm.units=datacontext.lookup.refreshUnitLookupCachedData(true);
}
}
})();       
函数refreshUnitLookupCachedData(包括Ullo){
var predicate=breeze.predicate.create('isLookUpValue','=',true);
如果(包括乌洛){
谓词=谓词.or(this.\u predicates.isNullo);
}
返回this.lookupCachedData.units=this.\u getAllLocal(entityNames.unit,'displayOrder',谓词);
}
函数_getAllLocal(资源、顺序、谓词){
返回EntityQuery.from(资源)
.orderBy(订购)
.where(谓词)
.使用(此.manager)
.执行地();
}
我有一个将对象列表绑定到选择下拉框的指令。然后,当用户进行选择时,他们单击“添加”按钮,该项目将从“选择”列表中删除并添加到“选定”列表中。用户可以从选定列表中删除,并将其放回选定列表中

对于需要这些值的每个对象,将使用ng repeat为其呈现此select指令。ng repeat中的每个项都会获得另一个控制器的自身实例

因此,如果ng repeat渲染了10个对象,其中10个下拉列表将与其他输入控件一起渲染

如果我在第一个下拉列表中选择一个项目并将其添加到所选列表中。页面上的每个下拉列表都会更改(从下拉列表中删除项目并添加到选择列表)。即使每个渲染下拉列表都应该与该ng repeat项的特定控制器相关

我对示波器做了一些错误,但不知道是什么

 <section id="admin-view" class="mainbar" data-ng-controller="myItemController as i">
        <section class="matter">
            <div class="container">
                <div class="row">
                    <div id="itemFilter" >
                        <div data-dc-item-filter
                             items="i.itemPartials"
                             selected-item="i.selectedItem"
                             item-filter-text="i.itemSearch"
                             filtered-items="i.filteredItemPartials"
                             use-drop-down="false">
                        </div>
                    </div>
                </div>
                <div class="row"                      
                   ng-repeat="itemPartial in i.filteredItemPartials"
                        data-ng-controller="itemdetail as vm" >
                        <div class="widget>
                            <div data-cc-widget-header title="{{itemPartial.name}}" 
                                       allow-collapse="true" 
                                    is-widget-expanded="vm.isWidgetExpanded"></div>
                            <div class="widget-content collapse">
                                <div class="row" data-ng-click="$event.stopPropagation();">
                                    <div id="solids" class="col-sm-8 col-md-7 col-lg-4">
                                        <div class="widget">
                                            <div data-cc-widget-header 
                                             title="Solid Options"   nested-header="true"
                                                 allow-collapse="true"
                                                 is-widget-expanded="vm.isWidgetExpanded"></div>
                                            <div class="row widget-content">
                                                <div class="col-sm-4 col-md-4 col-lg-4">
                                                    <div data-dc-lookup-dropdown
                                                         title="Items:"
                                                         items="vm.myList"
                                                         selected-item="vm.selectedItem"
                                                         selected-items="vm.selectedItems">
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </section>
        </section>


itemdetail
控制器是什么样子的?我能想到的唯一一件事是,如果
vm.myList
以某种方式引用了控制器实例共享的列表。你能创建一个小提琴来显示你的代码发生了什么吗?今晚我将添加小提琴手:-)。谢谢仍在处理fiddler,似乎无法获取带有select to bind的指令。当我得到它的工作,我会张贴一个链接。好的,我有一个解决方案。。。我可以用angular.copy解决这个问题。这是一个糟糕的解决方案吗?它会消耗客户机上的大量内存吗?它们是50个项目下的小列表。
  <select class="form-control"
                        data-ng-options="(item.acronym !== undefined ? item.acronym : item.name) for item in items | filter:{selected: false}"
                        data-ng-model="selectedItem"
                        data-ng-disabled="disableSelect"
                        data-ng-change="onChange(item)"
                        ng-init="selectedItem = items[0]"></select>
                <span class="input-group-btn">
                    <button class=" btn btn-info blue-tooltip"
                            data-ng-disabled="disableAddButton"
                            data-ng-click="addSelectedItem()">
                        <span class=" fa fa-plus"></span>
                    </button>
                </span>  


  app.directive('dcLookupDropdown', [function () {
       //Usage:
       //<div data-dc-lookup-dropdown
       //     title="Units:"
       //     items="vm.mylist"
       //     selected-item="vm.selectedItem"
       //     selected-items="vm.selectedItems">
       //</div>
        var directive = {
            controller: ['$scope', lookupDropDownController]
            ,scope:  {
                "title":"@"
                ,"items": "="
                ,"selectedItem": "="
                ,"selectedItems": "="
            }
            ,restrict: 'A'
            ,replace: true
            ,templateUrl: 'app/templates/dc-lookupDropDown-template.html'
        };

        return directive;


        function lookupDropDownController($scope) {

            $scope.addSelectedItem = addSelectedItem;
            $scope.removeSelectedItem = removeSelectedItem;
            $scope.onChange = onChange;
            $scope.disableAddButton = true;
            $scope.disableSelect = false;

            activate();

            function activate() { }

            function addSelectedItem() {
                $scope.selectedItems.push($scope.selectedItem);

                _disableOption($scope.items, $scope.selectedItem);

                //sets dropdown back to nullo object
                $scope.selectedItem = $scope.items[0];
                $scope.disableAddButton = shouldDisableAddButton();
                $scope.disableSelect = shouldDisableSelect();
            }

            function onChange(item) {
                $scope.disableAddButton = shouldDisableAddButton();
            }

            function shouldDisableAddButton() {
                return ($scope.selectedItem.id == 0);
            }

            function shouldDisableSelect() {
                return ($scope.selectedItems.length == $scope.items.length - 1);
            }

            function removeSelectedItem(item) {
                $scope.selectedItem = item;

                for (var idx = $scope.selectedItems.length; idx--;) {
                    if ($scope.selectedItems[idx].id == item.id) {
                         $scope.selectedItems.splice(idx, 1);
                    }
                }
                _enableOption($scope.items, $scope.selectedItem);

                //sets dropdown back to nullo object
                $scope.selectedItem = $scope.items[0];
                $scope.disableAddButton = shouldDisableAddButton();
                $scope.disableSelect = shouldDisableSelect();
            }

            function _disableOption(itemList, selectedItem) {
                if (selectedItem !== null) {
                    angular.forEach(itemList, function (item) {
                        if (item.id == selectedItem.id) {
                            item.selected = true;
                            return item;
                        }
                        return selectedItem;
                    }, selectedItem);
                };
            };

            function _enableOption(itemList, selectedItem) {
                if (selectedItem !== null) {
                    var foundItem = angular.forEach(itemList, function (item) {
                        if (item.id == selectedItem.id) {
                            item.selected = false;
                            return item;
                        }
                        return selectedItem;
                    }, selectedItem);
                };
            };
        }
    }]);