TOGOUTECH

javascript - 如何从其他 Controller 关闭 Angular-ui 模式

coder 2024-12-09 原文

我正在使用 Angular-ui 弹出一个带有表单的模式。我的代码是:

app.controller('NewCaseModalCtrl', ['$http', '$scope','$modal', function ($http, $scope, $modal, $log) {

  $scope.items = ['item1', 'item2', 'item3'];
  $scope.open = function (size) {

    var modalInstance = $modal.open({
      templateUrl: 'modal-new-case.html',
      controller: 'ModalInstanceCtrl',
      size: size,
      resolve: {
        items: function () {
          return $scope.items;
        }
      }
    });

    modalInstance.result.then(function (selectedItem) {
      $scope.selected = selectedItem;
    }, function () {
    });
  };
}]);

然后我在 modal-new-case.html 模板中有另一个 Controller ,我希望它运行一个 httpd 请求然后关闭该模式,这是代码:

    app.controller('CreateCaseFormCtrl', ['$http','$scope', function($http,$scope) {
    $scope.formData = {};
    $scope.processForm = function() {

        $http.post('http://api.com/proj', $scope.formData).
        success(function(data, status, headers, config) {
            console.log("success " + data.id);
        }).
        error(function(data, status, headers, config) {
            console.log("Error " + status + data);
        });
    };

}]);

好的,在我的 modal-new-case.html 模板中,当我这样做时加载它:

ng-controller="NewCaseModalCtrl"

我有这个 HTML:

<div ng-controller="CreateCaseFormCtrl">
    <form ng-submit="processForm()">
                <button class="btn btn-primary" ng-click="processForm()" >OK</button>
                <button class="btn" ng-click="cancel()">Cancel</button>
    </form>
</div>

所以如果你看到了,我真正想做的是运行那个 processForm() 函数,当它成功返回时,我想然后调用将关闭模态的函数,我相信它是“取消( )"就可以了。

但我不知道如何从 CreateCaseFormCtrl Controller 中引用它。

我很感激任何想法和帮助,我想补充一点,当涉及到 Angular 时,我非常不成熟,所以如果这很复杂,请记住,也许我不是 100% 清楚 Angular 中的每一件事比如工厂之类的。我想我是说我对一个相当简单的脏解决方案非常满意,因为这不会是长期的生产编程代码。

最佳答案

第 1 步:删除

ng-controller="CreateCaseFormCtrl"

来自

<div ng-controller="CreateCaseFormCtrl">
    <form ng-submit="processForm()">
                <button class="btn btn-primary" ng-click="processForm()" >OK</button>
                <button class="btn" ng-click="cancel()">Cancel</button>
    </form>
</div>

第 2 步:更改

controller: 'ModalInstanceCtrl',   =>   controller: 'CreateCaseFormCtrl'

var modalInstance = $modal.open({
  templateUrl: 'modal-new-case.html',
  controller: 'CreateCaseFormCtrl', //Add here
  size: size,
  resolve: {
    items: function () {
      return $scope.items;
    }
  }
});

第 3 步:在 CreateCaseFormCtrl 中添加名为 $modalInstance 的服务

app.controller('CreateCaseFormCtrl', ['$http','$scope', '$modalInstance', function($http,$scope, $modalInstance) {

第四步:添加close和ok函数

$scope.cancel = function () {
    $modalInstance.dismiss();
};

和 $modalInstance.close();在

$http.post('http://api.com/proj', $scope.formData).
    success(function(data, status, headers, config) {
        console.log("success " + data.id);
        $modalInstance.close(); //add here
    }).
    error(function(data, status, headers, config) {
        console.log("Error " + status + data);
    });

关于javascript - 如何从其他 Controller 关闭 Angular-ui 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27852861/

有关javascript - 如何从其他 Controller 关闭 Angular-ui 模式的更多相关文章

  1. javascript - CORS 预检错误 redux & loopback API - 2

    我在react-redux上有一个客户端应用程序,在loopback上有一个API应用程序。对于本地测试,我在端口8080上运行客户端应用程序,在端口3000上运行服务器应用程序。当我尝试使用客户端应用测试GoogleOAuth(使用loopback-passport组件)时,出现以下错误。当我使用POSTMAN对其进行测试时,没有任何问题。这是客户端代码,require('babel-polyfill');import{CALL_API}from'redux-api-middleware';importCfrom'../constants';constAPI_ROOT='http:/

  2. javascript - 在 Webpack 和 React.js 中设置代码拆分 - 2

    我正在尝试在我的应用程序中设置代码拆分/分块-通过路由,使用require.ensure。所以这是我的路线:{require.ensure([],(require)=>{cb(null,require('attendee/containers/Profile/').default)},'attendee')}}/>以下是我的webpack配置中的相关行:constPATHS={app:path.join(__dirname,'../src'),build:path.join(__dirname,'../dist'),};constcommon={entry:[PATHS.app,],o

  3. javascript - 如何忽略 node.js 中另一个文件或组件所需的文件 - 2

    以下可以忽略或对导入的文件进行一些修改,例如在我的index.js中require.extensions['.js']=function(file){console.log(file.id)return;};但是我真的不想忽略index.js中的这些文件我想忽略在后续文件/组件中导入的文件require.extensions['.js']=function(file){console.log(file.id)return;};require('babel-register')require('./components/Test.spec.js');例如,这会记录以下内容并返回/User

  4. javascript - 将对象数组转换为与 nodejs/pg/unnest 兼容的数组 - 2

    关于UPDATEmultiplerowsfrommultipleparamsinnodejs/pg,我需要运行以下命令:updateportfoliospsetvotes=s.votesfromunnest(array[(5,1),(15,1),(25,2)])s(votesint,idint)wherep.id=s.id其中unnest中我的数组是$1,如下:updateportfoliospsetvotes=s.votesfromunnest($1)s(votesint,idint)wherep.id=s.id但是,我的数组最初由对象组成,如:[{votes:5,id:1},{vo

  5. javascript - 使用 AJAX 的 Bootstrap 工具提示(再来一次) - 2

    平凡、常见的用例我想要一个工具提示,它在鼠标悬停时立即显示正在加载的GIF,该GIF被AJAX成功回调产生的HTML所取代。AJAX工具提示的错误答案几乎与在线问这个确切问题的人一样多。特别是,我一直在模拟我在this上的努力。,this,尤其是几个答案here.对于所有这些解决方案(即使是那些专门声称可以解决该问题的解决方案),我一直遇到的问题是,工具提示偶尔会延迟出现并且无法消失。这也不是库问题,因为我过去在使用jQuery-UI工具提示时遇到过同样的问题。图书馆jQueryv2.2.3Bootstrapv3.3.6之前尝试过使用jQuery1并遇到了同样的问题:jQueryv1.

  6. javascript - Debug模式停止后如何查看 Visual Studio 2015 Javascript 控制台? - 2

    我的JavascriptApacheCordova应用构建良好,但无法在模拟器或真实设备上进行调试。我在VisualStudioJavascript控制台中看到一堆消息匆匆而过,但应用程序立即崩溃并且Javascript控制台变得不可用。我已经尝试设置断点来暂停无法运行的应用。调试器停止后如何查看这些Javascript控制台日志?编辑:如果适用于带有WindowsPhone插件且无法在浏览器中调试的WindowsPhone(通用) 最佳答案 这是我想到的唯一方法;确保JS控制台按钮“导航时清除”未设置启动应用程序,使错误出现,尽管

  7. javascript - 从本地网络访问 Webpack Dev Server? (在手机上 React 热重载) - 2

    我想通过本地网络上的设备测试React网站。它适用于其他PC,但不适用于我的手机。你们有什么想法可能导致这种情况吗?这是我的配置文件的样子:constwebpack=require('webpack');constpath=require('path');module.exports={entry:{mainFeedPage:['webpack/hot/only-dev-server','./src/mainFeedPage.js'],venues:['webpack/hot/only-dev-server','./src/venues.js'],artists:['webpack/h

  8. javascript - 如何使用 bolt 协议(protocol)(javascript)将对象数组(批量插入)插入到 neo4j 中 - 2

    1.向服务器发送带有对象数组的httppost[{id:1,title:‘one’},{id:2,title:’two’}]2.在服务器上接收post并用bolt批量插入neo4jletdata=req.body;//setupboltletdb=require('neo4j-driver').v1;letdriver=db.driver('bolt://localhost',db.auth.basic('neo4j',’neo4j’));letsession=driver.session();3。设置执行语句//starttransactionfor(vari=0;i>data.le

  9. javascript - 使用 google calendar api 连接到非用户日历 - 2

    我正在构建一个预订网页。此页面需要检查我的一个公共(public)议程以查看是否有预告片可用:Exampleevent我想为此目的使用谷歌日历API,该API需要给我一个谷歌日历中的日期列表。为此,我制作了一个基于googlecalendarAPIjavascriptquickstart的页面。唯一的问题是它加载当前用户的日历(例如[email protected]),但我希望它打开我的日历([email protected])。如何修改googleAPI日历javascript快速入门代码以实现此目标?GoogleCalendarAPIJavascriptquicksta

  10. javascript - Web Worker 性能降低 20 倍 - 2

    我似乎无法在任何地方找到明确的答案。我有一个非常简单的POC,可以以同步和异步方式计算相同的函数。worker.jsonmessage=function(e){vars=newDate().getTime();i=0;varavg=Math.random();while(i索引.htmlvarmw=newWorker("worker.js");mw.onmessage=function(e){console.log('Workersays:'+e.data);};functionav(j){vars=newDate().getTime();i=0;varavg=Math.random(

随机推荐