MVC中的函数可以跨控制器进行交互吗?

时间:2015-05-25 09:23:10

标签: javascript jquery asp.net-mvc angularjs typescript

我是MVC和Angular的新手。

我有两个控制器和两个相关的视图,exampleview1.cshtml / ts和exampleview2.cshmtl / ts。

在exampleview1.cshtml中我有一个按钮,它使用Angular指令'ng-click'来调用exampleview1.ts中的函数。

在exampleview2.cshmtl中我有一个包含一些文本的段落。本段包含在div中,该div使用'ng-if'指令从最初隐藏div的exampleview2.ts调用函数。这是使用jQuery的.hide()方法完成的。

我希望exampleview1中的按钮与exampleview2中的文本绑定。单击此特定按钮时,应将exampleview2中的文本设置为可见(可能使用jQuery的.toggle()或.show()方法)。

如何设置它以便在单击按钮时,它会正常调用与其关联的事件,还会告诉exampleview2.ts中的函数从.hide()切换到.show()?目前,绑定到'ng-if'指令的函数如下所示:

 viewScope.testingText = function () {
            $('#divcontainstext').hide();
            return true;
        };

所以目前它被强制隐藏但我不确定是否需要更改此功能以适应.show()行等。我不确定如何将这些功能绑在一起。< / p>

1 个答案:

答案 0 :(得分:0)

在example2.html中使用 ng-show 指令,该指令附加了一个范围值,告诉它为true或false。

广播来自example1.html内部的点击事件,以便当这个事件在example2.html中收听时,它会更改ng-show&#39;范围变化值。

<强> example1.html的

   <button ng-click="change()">Click </button>

   app.controller('example1Ctrl,function($rootScope,$scope){
   $scope,change=function(){
      $rootScope.broadcast('visibleStatus','true');
   }
 }

<强> example2.html:

    <div ng-show="visible">//some contents that needs to be hidden/shown
    </div>

    app.controller('example2Ctrl',function($rootScope,$scope){
        $scope.visible=false;
        $rootScope.$on('visibleStatus',function(event,data){
             $scope.visible=data;
        }
    }

这可能不是要复制和运行的确切代码,但请尝试使用此方法,并可能使用您自己的相关代码。