1

我遇到了一個奇怪的行爲,使用隔離範圍的角度指令。很顯然,模板是使用舊範圍解析的(即使是跨平臺的),而不是新的。是否有可能使用隔離範圍渲染角度指令模板?

這聽起來有點古怪,因爲它違反了該指令的範圍的 '隔離'

的HTML:

<div ng-app="myApp"> 
    <div ng-controller="MyController"> 
    out prop = {{prop}} 
    <div my-directive prop="'valueIN'"> 
     in prop = {{prop}} 
    </div> 
    </div> 
</div> 

JS的

function MyController($scope) { 
    $scope.prop = 'valueOUT'; 
} 

angular.module('myApp',[]).directive('myDirective', function() { 
    return { 
    scope: { prop: '=' } 
    }; 
}); 

此輸出:

角1.1

out prop = valueOUT 
in prop = valueIN 

角1.2

out prop = valueOUT 
in prop = valueOUT 

這聽起來有些不可思議,我... 也得到了與transcluding模板相同的行爲。

是否有可能在1.2中獲得1.1行爲?

通訊小提琴: https://jsfiddle.net/4s1fxjmq/

回答

1

一種方法是在適當的範圍內重新編譯元素:

.directive('myDirective', ['$compile', function($compile) { 
    return { 
    scope: { 
     prop: '=' 
    }, 
    link: function(scope, element, attr) { 
     attr.$set('myDirective', null) 
     $compile(element)(scope) 
    } 
    } 
}]) 
+0

這工作,但如何做,如果你在你的鏈接初始化你的範圍有代碼(即做一些你做計算在模板中顯示的內容)? – sknat

+0

我會立即解決這個問題(爲避免哈希重新包裝,最終沒有隔離範圍)。這種行爲對我來說仍然很奇怪... – sknat