Javascript 角度UI模式的范围问题

Javascript 角度UI模式的范围问题,javascript,angularjs,scope,modal-dialog,angularjs-scope,Javascript,Angularjs,Scope,Modal Dialog,Angularjs Scope,我在理解/使用角度UI模式的作用域时遇到问题 虽然在这里不是很明显,但我已经正确地设置了模块和所有内容(据我所知),但这些代码示例是我发现错误的地方 index.html(它的重要部分) create.html(全部) x 添加模板组 组名: 组类型: 取消 添加 所以,我的问题是:为什么范围不双重绑定到UI?为什么此具有自定义值,而$scope没有 我曾尝试将ng controller=“AppCreateCtrl”添加到create.html中的body div,但这引发了一个错误:“未

我在理解/使用角度UI模式的作用域时遇到问题

虽然在这里不是很明显,但我已经正确地设置了模块和所有内容(据我所知),但这些代码示例是我发现错误的地方

index.html(它的重要部分)

create.html(全部)


x
添加模板组
组名:
组类型:
取消
添加
所以,我的问题是:为什么范围不双重绑定到UI?为什么
具有自定义值,而
$scope
没有


我曾尝试将
ng controller=“AppCreateCtrl”
添加到create.html中的body div,但这引发了一个错误:“未知提供程序:$modalInstanceProvider当涉及嵌套作用域时,不要将
直接绑定到作用域的成员:

<input ng-model="name" /> <!-- NO -->

将它们绑定到至少更深的级别:

<input ng-model="form.name" /> <!-- YES -->

原因是作用域通常继承其父作用域。因此,在设置第一级成员时,这些成员直接在子作用域上设置,而不会影响父作用域。与此相反,在绑定到嵌套字段(
form.name
)时成员
表单
是从父作用域读取的,因此访问
名称
属性可以访问正确的目标


阅读更详细的说明。

2014年11月更新:

实际上,在升级到ui bootstrap 0.12.0后,您的代码应该可以正常工作。转移的作用域与控制器的作用域合并,因此不再需要
$parent
表单。
之类的东西

在0.12.0之前

模态使用转义插入其内容。多亏了
ngForm
,您可以通过
name
属性控制作用域。因此,要转义转义作用域,只需通过以下方式修改表单:

<form name="$parent">



模型数据将在控制器范围内可用。

我让我的工作如下:

var modalInstance = $modal.open({
  templateUrl: 'partials/create.html',
  controller: 'AppCreateCtrl',
  scope: $scope // <-- I added this
});
var modalInstance=$modal.open({
templateUrl:'partials/create.html',
控制器:“AppCreateCtrl”,
范围:$scope//
它对我有用范围:$scope

谢谢你Jason Swett

我添加了作用域:$scope,然后它就可以工作了。很酷

当将此更改为'form.name'时,没有做任何事情,将其更改为ng model=“$parent.name”修复了问题。谢谢!(同时也感谢阅读材料。还没有看到此内容。)如果使用
控制器作为
语法,则不会遇到像这样的嵌套范围问题
控制器作为
语法是什么?请参阅。基本上,先使用ng controller=“MyCtrl as my”然后引用像my这样的ng模型。someVar@NikosParaskevopoulos,“form.name”是什么"表示?在提供的代码中根本没有提到它!请澄清,您是说您正在调用的
$modal
控制器的作用域应该可用于分配给该模态的控制器吗?不,问题是,即使是模态实例控制器,表单也不容易访问。要访问哪个作用域的控制器ns模态刚刚将
scope:$scope:$modal.open params map放在$modal.open params map中。你是说Angular UI吗?这与UI引导不同吗?这是一个更好的解决方案。更干净。我们刚刚升级到0.12.1,目前正在修复它引入的破坏性更改。我可以将其添加到列表中。谢谢!!我接受这个答案,因为它这是当前的实现,对于那些最终在这里尝试工作的人更有用。请阅读完整的线程,除非您使用的是最新的(~0.12)Angular UI的版本。如果作用域为setHi,状态已更改,则模态似乎无法使用$modalStack关闭。这解决了我的问题一段时间,但在关闭模态/对话框时注意到一件奇怪的事情,内容正在更改,它似乎与作用域对象上的某些内容相混淆。添加作用域:$scope,preserveScope:true//在我的控制器中,我使用的是vm=this。我没有使用$scope。那么我应该为scope分配什么?这里讨论的是很好的模态scope:
<input ng-model="form.name" /> <!-- YES -->
<form name="$parent">
<form name="$parent.myFormData">
var modalInstance = $modal.open({
  templateUrl: 'partials/create.html',
  controller: 'AppCreateCtrl',
  scope: $scope // <-- I added this
});
$scope.open = function () {

          var modalInstance = $uibModal.open({
              animation: $scope.animationsEnabled,
              templateUrl: 'myModalContent.html',
              controller: 'salespersonReportController',
              //size: size
              scope: $scope
            });

      };