javascript - Angular 中的关注点分离 - 将函数传递给指令

标签 javascript angularjs

我们总是被告知要确保适当的关注点分离 ( How do I “think in AngularJS” if I have a jQuery background? ),并且 View 应该是正在发生的事情的正式记录。

假设我们有一个指令,可以根据单独的函数动态地获取元素的 src。我的印象是我们应该使用隔离范围和“&”将函数传递给指令。

但是,由于 View 现在包含逻辑,这是否算作不分离关注点?或者因为 myFunction() 存储在 Controller 中所以可以吗?

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

HTML

<body ng-app='testApp'>
    <div ng-controller='TestCtrl'>
        <img my-src callback='myFunction()' />
    </div>
</body>

JS

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());
        }
    };
})

最佳答案

对我来说这看起来不错, Controller 仍然控制着 View 显示的内容...但如果它真的只是动态设置 src,您可以使用 ng-src。

<img ng-src="{{ myFunction() }}" />

示例如下:http://plnkr.co/edit/Rw2OG1ltrmpUO2oLO1fE?p=preview

关于javascript - Angular 中的关注点分离 - 将函数传递给指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22240127/

相关文章:

javascript - Angular 2.0 迁移路径

javascript - chart.js 中圆环图上的自定义数据位置

AngularJS 如何从指令访问 Controller 范围

javascript - 如何在 AngularJs 中通过多个指令与隔离范围绑定(bind) ngModel?

javascript - 在预输入框中添加图标

javascript - 页面加载后向 <body> 添加元素的问题

javascript - ng-model 不更新对象

javascript - AngularJS 选择 ng-model 值不在范围内

angularjs - mean.js 应用程序中的 ngDialog

javascript - 根据数组过滤 ng-repeat json 结果