Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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
Javascript AngularJS有多少种方法可以将数据传递给除scope之外的指令?_Javascript_Html_Css_Angularjs - Fatal编程技术网

Javascript AngularJS有多少种方法可以将数据传递给除scope之外的指令?

Javascript AngularJS有多少种方法可以将数据传递给除scope之外的指令?,javascript,html,css,angularjs,Javascript,Html,Css,Angularjs,我知道一种方法,那就是使用范围。还有什么其他方法可以做到这一点 这是自定义指令。这里我创建了一些自定义属性,这些属性通过作用域将数据从HTML传递到指令 module.directive('createFormButtons', [function () { return { restrict: 'EA', scope: { isUpdate: '=isUpdate', saveForm: '=saveForm', saveData: '=saveData

我知道一种方法,那就是使用范围。还有什么其他方法可以做到这一点

这是自定义指令。这里我创建了一些自定义属性,这些属性通过作用域将数据从HTML传递到指令

module.directive('createFormButtons', [function () {
    return {
        restrict: 'EA',
        scope: { isUpdate: '=isUpdate', saveForm: '=saveForm', saveData: '=saveData', isChange: '=isChange', isPrint: '=isPrint', isTabIndex: '=isTabIndex' },
        templateUrl: 'components/common/createFormButtons.html',
        link: function ($scope, element, attrs) {
            $scope.printpages = false;
            $scope.save = function () {
                $scope.$emit('save');
            };

            $scope.update = function () {
                $scope.$emit('update');
            };

            $scope.refresh = function () {
                $scope.$emit('refresh');
            };

            $scope.newForm = function () {
                $scope.$emit('newForm');
            };

            $scope.print = function () {
                $scope.printpages = !$scope.printpages;
            };

            $scope.printing = function (v) {
                event.stopPropagation();
                if (v === 5)
                    $scope.printpages = !$scope.printpages;
                else
                    $scope.$emit('print', v);

            };
        }
    };
}]);
这就是我在HTML上对它的称呼

<create-form-buttons style="height:400px;" is-print="true" is-update="isUpdate" is-change="isChange" save-form="inwardForm" save-data="inward">

</create-form-buttons>

  • 您可以
    $parse
    解析
    attrs
    对象上的内容
  • 您可以使用
    $scope.$on()
  • 您可以将数据存储在angular服务中,并将其注入指令中
还有什么其他方法可以做到这一点

你想达到什么目标

如果希望能够通过视图传入属性,那么已经使用的方法就足够了

正如@retoheusser所提到的,如果需要通过网络请求或其他数据源访问数据,另一种方法是创建服务或工厂,并将其注入指令中


您的指令还可以绑定一个
模型
,您可以在指令中访问它的属性。

您使用的是
$scope
变量,这是最好的方法,为什么要更改?@Nicolas他不是要求更改,而是要求其他可能性。请阅读并确认。这个问题太宽泛了。要求所有其他方式传递数据本质上是无限的。对不起,我没有要求所有其他方式。你能把这个问题再读一遍吗?事实上,这个问题是面试官问我的,我答不上来。无论如何,谢谢你的回复。谢谢你的回复。我想实施同样的措施。