嵌套视图控制器和ng-click-AngularJs

Nested view controller and ng-click - AngularJs

本文关键字:ng-click-AngularJs 控制器 视图 嵌套      更新时间:2023-09-26

我有 8 个jade视图,当时只加载了其中一个,并通过jquery填充到具有controllerdiv中。

现在,我有两个关于这些的问题:

  1. 是否有必要在我的部分视图(与主controller相同的controller)之上再次定义controller
  2. 所有这些视图都具有相同的ng-click。 但是加载后它们不起作用。但是,它们通过jquery单击事件工作。我应该对他们做任何额外的事情吗?

我以前对li元素有同样的问题,但我通过使用 compileData 从 ng-click 获得帮助来解决它,但我无法使用按钮获得结果。

法典:

主玉:

div(ng-controller="elementCtrl") 
  div#ddd(class="col-lg-7 col-md-5 col-sm-7")

部分视图示例:

div#spPartial()
  div.col-lg-12.col-md-12.col-sm-12 
    span.col-lg-2.col-md-5.col-sm-5 Name
    input#EnglishName(name="name" type="text" ng-model="elementModel.Name" value="#{Name}"  class="col-lg-5 col-md-7 col-sm-5")  
  button(type="button" compile-Data  name="btnSaveElement" ng-click="saveElement()") Save

控制器主要部分:

//It loads the partial view - It works successfully
$http.post('/api/elements/getElementTypesPartial',
                        {
                            "ElementId": elementId,
                            "ProgramId": newVal,
                            "ElementTypeId": elementTypeId
                        })
                        .success(function (d2) {
                            $("#ddd").html(d2);
                        }
//It doesn't work at all
$scope.saveElement = function () {
    alert();
    alert($scope.elementId);
}

还有一件事是,我把$scope.saveElement放在控制器作用域的根目录中。我不知道 angularJs 如何管理$scope,所以我在客户端代码中看到$scope.elementId。是否正确,或者我应该在每次加载部分时重新生成它($scope.saveElement)?

抱歉,我找不到任何描述这些的参考资料...

你应该摆脱jQuery加载,并使用一个角度路由器,它将根据路由配置加载模板。

由于它们是按角度加载的,因此它会为您完成所有编译。路由器也会负责 ajax 自动获取模板。

控制器也会在路由配置中定义,因此您可以从模板中删除ng-controller

转换应该不会花很长时间,因为设置路由配置很容易

开始

这将清除ng-click问题