javascript - 来自指令模板函数的 Angular 访问范围

标签 javascript angularjs

我有一个指令,它有一个模板函数

restrict: 'E',   // 'A' is the default, so you could remove this line
    scope: {
        field : '@field',

    },
    template: function( element, attrs) {
         //some code here
    },
    link: function (scope, element, attrs) {

是否可以从模板函数访问指令的范围?我正在尝试做类似的事情

if (scope.columnType == 'test'){ .. }

因为我想根据其他值渲染不同的模板

最佳答案

您可以从 Link 函数访问指令 $scope,$编译任何 HTML 并将其附加到指令元素(实际上,它可以被初始化为空):

angular.module("example")
.directive('example', function($compile) {
    return {
        restrict: 'E',
        link: function(scope, element, attrs){
            scope.nums = [1, 2, 3];
            var html = '<div ng-model="scope"><p ng-repeat="n in nums">{{ n }}</p></div>';
            var el = $compile(html)(scope);
            element.append(el);
        }
    }
});

请注意,我必须明确指定标签的数据模型 (ng-model = "scope")。否则我无法让它工作。

关于javascript - 来自指令模板函数的 Angular 访问范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30704757/

相关文章:

javascript - 复选框上的 Jquery 搜索建议

javascript - 如何使用 AngularJS Controller 绑定(bind)单个复选框值

Javascript 文件未加载

javascript - AngularJS 不会在浏览器重新加载时运行

java - angularJS绑定(bind)小程序参数

angularjs - "TypeError: Parameter "本地运行heroku应用程序时的url "must be a string, not undefined"

JavaScript:按名称调用参数评估

javascript - 屏幕左侧的白色垂直线

javascript - 无论我把它放在哪里,Onload 都会触发

coffeescript - AngularJS:如何在多个文件中创建 Controller