如何使用范围变量将值从控制器获取到指令中

Posted

技术标签:

【中文标题】如何使用范围变量将值从控制器获取到指令中【英文标题】:how to get the value into directive from controller using scope variable 【发布时间】:2014-09-01 16:43:13 【问题描述】:

我在 app.js 中定义了一个控制器和指令,并在 index.html 中使用它。

app.js

var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) 
    $scope.name = 'World';
);
app.directive('search', function() 
    return 
        scope: 
            display: '='
        ,
        restrict: 'AE',
        replace: true,
        link: function(scope, elm, attrs) 
            alert(display);
        
    ;
);

index.html

<!DOCTYPE html>
<html ng-app="plunker">
<head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <script>
        document.write('<base href="' + document.location + '" />');
    </script>
    <link rel="stylesheet" href="style.css" />
    <script data-require="angular.js@1.2.x" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.min.js" data-semver="1.2.17"></script>
    <script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
    <search display="name"></search>
</body>
</html>

当我在指令中给出 alert(display) 时,它应该打印“world”。

【问题讨论】:

【参考方案1】:

应该是scope.display:

    link: function(scope, elm, attrs) 
       alert(scope.display);
    

【讨论】:

我建议你创建一个 plunker 来演示这个问题 错误是:错误:[$compile:tpload] 无法加载模板:template.html。如果您加载 Angular 的非缩小版本,则错误消息更有意义。

以上是关于如何使用范围变量将值从控制器获取到指令中的主要内容,如果未能解决你的问题,请参考以下文章

Angular 控制器和指令将值从控制器获取到指令中

如何将值从 ajax 传递到 portlet 页面

如何将值从 tableview 传递到 collectionview

如何将值从表单传递到数据表

如何在python中定义空变量或将值从函数传递给全局变量? [复制]

Laravel:如何将值从控制器发送到模型?