Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.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_Snap.js - Fatal编程技术网

Angularjs 角度的自定义指令

Angularjs 角度的自定义指令,angularjs,angularjs-directive,snap.js,Angularjs,Angularjs Directive,Snap.js,您好,我有以下汉堡菜单指示: angular.module('app.directives') .directive('hamburger', hamburger); // Injecting Dependencies hamburger.$inject = ['$rootScope', '$timeout']; // Directive's Function, Where All Code is Declared and Executed funct

您好,我有以下汉堡菜单指示:

angular.module('app.directives')
    .directive('hamburger', hamburger);

    // Injecting Dependencies
    hamburger.$inject = ['$rootScope', '$timeout'];

    // Directive's Function, Where All Code is Declared and Executed
    function hamburger($rootScope, $timeout) {
        return {
            restrict: 'E',
            scope: {
                open: '='
            },
            templateUrl: 'tpls/directives/hamburger.html',
            link: function (scope, elem, attr, ctrl) {

                scope.$watch('open', function(newValue, oldValue) {

                    if (newValue == true) {
                        $timeout(function () {
                            elem.addClass("open");
                        }, 2000);

                        console.log("This is true");
                    }
                    else {
                        $timeout(function () {
                            elem.removeClass("open");
                        }, 2000);

                        console.log("This is false");
                    }

                });


            }
        }
    }
这是模板:

<div>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
</div>

好的,我发现了问题所在,我使用了controllerAs语法,从而创建了一个控制器实例(我认为它是如何工作的)作为vm。由于某些原因,我仍然不完全理解我无法将该属性绑定到该实例中的变量。当我将它改为scope.toggleMenu而不是vm.toggleMenu时,它工作了


我对angularjs非常陌生,所以我将假设双向绑定仅适用于范围变量,或者在不使用ControllerAs语法时有效。

好的,所以我发现了问题所在,我使用了ControllerAs语法,从而创建了一个控制器实例(我认为它是如何工作的)作为vm。由于某些原因,我仍然不完全理解我无法将该属性绑定到该实例中的变量。当我将它改为scope.toggleMenu而不是vm.toggleMenu时,它工作了


我对angularjs非常陌生,因此我将假设双向绑定仅适用于范围变量,或者当您没有使用ControllerAs语法时。

很可能您使用了错误的绑定类型,
@
绑定用于字符串。您可能需要使用
=
进行双向绑定。阅读更多:是的,我已经知道了。实际上,我最初使用“=”时它不起作用,我将其改为“@”。此代码看起来不错,您是否有附加到
视图的控制器代码?是的,我也将添加它。很可能您使用了错误的绑定类型,
@
绑定用于字符串。您可能需要使用
=
进行双向绑定。阅读更多:是的,我已经知道了。实际上,我最初使用“=”时它不起作用,我将其改为“@”。此代码看起来不错,您是否有附加到
视图的控制器代码?是的,我也会添加此代码。
<hamburger class="menu-btn2 pull-left" snap-toggle="left" open="vm.toggleMenu" ng-click="toggle()" ng-dblclick="doNothing()"></hamburger>
vm.toggleMenu = false;
vm.toggle = function () {
  vm.toggleMenu = !vm.toggleMenu;
};