Javascript angularjs指令隔离作用域

Javascript angularjs指令隔离作用域,javascript,angularjs,Javascript,Angularjs,根据这一点,我有一个指令和一个控制器(主要来自AngularJS指令PacktPub书) angular.module('myApp',[]) .directive('myIsolatedScopedDirective',function(){ 返回{ 范围:{ “标题”:“@msdTitle” }, 链接:函数($scope、$element、$attrs){ $scope.setDirectiveTitle=函数(标题){ $scope.title=标题; }; } }; }) .contr

根据这一点,我有一个指令和一个控制器(主要来自AngularJS指令PacktPub书)

angular.module('myApp',[])
.directive('myIsolatedScopedDirective',function(){
返回{
范围:{
“标题”:“@msdTitle”
},
链接:函数($scope、$element、$attrs){
$scope.setDirectiveTitle=函数(标题){
$scope.title=标题;
};
}
};
})
.controller('MyCtrl',函数($scope){
$scope.title=“你好世界”;
$scope.setAppTitle=函数(标题){
$scope.title=标题;
};
});
{{title}}
升级我!
{{title}}
鲍勃!
问题如下: 为什么
{{title}}
的计算结果为
“Hello World”
,为什么不
“我是应用程序Hello World中的一个指令”
? 有人能解释一下吗? 多谢各位


原因是,您必须在指令的
template
属性中输入模板,使其成为独立的模板。现在,该指令创建了一个独立的作用域,但它不会在任何地方使用它,因为在触发该指令的链接函数时,您的指令标记内的内容已经在父作用域(MyCtrl)中进行了计算

这可能就是我们想要做的

指令

.directive('myIsolatedScopedDirective', function(){
    return {
        scope : {
            'title' : '@msdTitle'
        },
        replace: true,
        template: '<div><h4>{{title}}</h4>' +
          '<button ng-click="setDirectiveTitle(\'bob\')">Bob it!</button>',
        link: function ($scope, $element, $attrs) {
            $scope.setDirectiveTitle = function (title) {
                $scope.title = title;
            };
        }
    };
指令('myIsolatedScopedDirective',函数(){ 返回{ 范围:{ “标题”:“@msdTitle” }, 替换:正确, 模板:“{{title}}”+ “鲍勃!”, 链接:函数($scope、$element、$attrs){ $scope.setDirectiveTitle=函数(标题){ $scope.title=标题; }; } }; 标记

<div my-isolated-scoped-directive msd-title="I'm a directive within the app {{title}}"></div>


谢谢。然后我认为那本书是一堆废话……所以没有办法将指令“content”/innerHTML(所以不是从模板生成的那一个)绑定到指令的隔离范围?可能是使用transclude?我还没有尝试过,但transclude也应该这样做
<div my-isolated-scoped-directive msd-title="I'm a directive within the app {{title}}"></div>