Javascript 部分隔离范围角
我有一个指令,我想在一个页面上包含多个次。Javascript 部分隔离范围角,javascript,angularjs,forms,angularjs-scope,Javascript,Angularjs,Forms,Angularjs Scope,我有一个指令,我想在一个页面上包含多个次。 我还想从父控制器控制该指令 举例来说,该指令是一个模态,其中包含转置的部分。此分部具有发送消息的表单 我想从我的父控制器中指定该表单的功能,但是当我隔离作用域(以便每页可以有多个指令)时,我无法再访问angular创建的表单对象 我愿意接受建议 html页面 好的,在把它全部打出来之后,我意识到如何做这样的事情。 我的目标是隔离指令的范围,而不是内部表单的范围。 所以我所要做的就是改变我所包含的表单/模式内容的编译范围 $compile(element
我还想从父控制器控制该指令 举例来说,该指令是一个模态,其中包含转置的部分。此分部具有发送消息的表单 我想从我的父控制器中指定该表单的功能,但是当我隔离作用域(以便每页可以有多个指令)时,我无法再访问angular创建的表单对象 我愿意接受建议 html页面
好的,在把它全部打出来之后,我意识到如何做这样的事情。
我的目标是隔离指令的范围,而不是内部表单的范围。
所以我所要做的就是改变我所包含的表单/模式内容的编译范围
$compile(element.find('[ng transclude]').contents())($scope.$parent)代码>
而不是
$compile(element.find('[ng transclude]').contents())($scope)代码>
无论如何谢谢你
-詹姆斯·哈林顿
<page controller="pageCtrl">
<modal partial="/path/to/partial1"></modal>
<modal partial="/path/to/partial2"></modal>
</page>
partial1.html
<form name="formName1"></form>
partial2.html
<form name="formName1"></form>
app.directive('modal', function(){
return {
restrict: 'AE',
transclude: true,
replace: true,
scope:true,
templateUrl: '/path/to/modal.html',
link:function($scope, elem, attrs){
$http.get(attrs.partial, { cache: $templateCache })
.success(function(response) {
element.find('[ng-transclude]').append(response);
$compile(element.find('[ng-transclude]').contents())($scope);
});
}
}
});
app.controler('pageCtrl', function(){
$scope.submitForm1 = function(data){
if($scope.formName1.$valid){
//DO SOMETHING
}
}
})