Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.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 角度传递函数到指令中的关注点分离_Javascript_Angularjs - Fatal编程技术网

Javascript 角度传递函数到指令中的关注点分离

Javascript 角度传递函数到指令中的关注点分离,javascript,angularjs,Javascript,Angularjs,我们总是被告知要确保适当地分离关注点,并且观点应该是正在发生的事情的正式记录 假设我们有一个指令,它基于一个单独的函数动态地修改元素的src。我的印象是,我们应该使用隔离作用域和“&”将函数传递给指令 然而,由于视图现在包含逻辑,这算不上分离关注点吗?还是因为myFunction存储在控制器中就可以了 <img my-src callback='myFunction()' /> 对我来说这看起来很好,控制器仍然控制着视图显示的内容。。。但是如果只是动态地设置src,那么可以使用ng

我们总是被告知要确保适当地分离关注点,并且观点应该是正在发生的事情的正式记录

假设我们有一个指令,它基于一个单独的函数动态地修改元素的src。我的印象是,我们应该使用隔离作用域和“&”将函数传递给指令

然而,由于视图现在包含逻辑,这算不上分离关注点吗?还是因为myFunction存储在控制器中就可以了

<img my-src callback='myFunction()' />

对我来说这看起来很好,控制器仍然控制着视图显示的内容。。。但是如果只是动态地设置src,那么可以使用ngsrc

<img ng-src="{{ myFunction() }}" />
示例如下:

angular.module('testApp', [])
.controller('TestCtrl', function($scope) {
    $scope.myFunction = function() {
        return 'http://nodejs.org/images/roadshow-promo.png';
    }
})
.directive('mySrc', function() {
    return {
        restrict: 'A',
        scope: {
            callback: '&'
        },
        link: function ( scope, elem, attrs ) {
            elem.attr('src', scope.callback());
        }
    };
})
<img ng-src="{{ myFunction() }}" />