相关疑难解决方法(0)

AngularJS.如何从控制器组件外部调用控制器功能

如何从网页的任何地方(控制器组件之外)调用控制器下定义的功能?

当我按下"get"按钮时它完美地工作.但我需要从div控制器外部调用它.逻辑是:默认情况下我的div是隐藏的.在导航菜单的某处我按下一个按钮,它应该显示()我的div并执行"get"功能.我怎么能做到这一点?

我的网页是:

<div ng-controller="MyController">
  <input type="text" ng-model="data.firstname" required>
  <input type='text' ng-model="data.lastname" required>

  <form ng-submit="update()"><input type="submit" value="update"></form>
  <form ng-submit="get()"><input type="submit" value="get"></form>
</div>
Run Code Online (Sandbox Code Playgroud)

我的js:

   function MyController($scope) {
      // default data and structure
      $scope.data = {
        "firstname" : "Nicolas",
        "lastname" : "Cage"
      };

      $scope.get = function() {
        $.ajax({
           url: "/php/get_data.php?",
           type: "POST",
           timeout: 10000, // 10 seconds for getting result, otherwise error.
           error:function() { alert("Temporary error. Please try again...");},
           complete: function(){ $.unblockUI();},
           beforeSend: function(){ $.blockUI()},
           success: function(data){
            json_answer = eval('(' + data …
Run Code Online (Sandbox Code Playgroud)

angularjs

186
推荐指数
6
解决办法
35万
查看次数

从遗留代码中调用AngularJS

我正在使用AngularJS来构建与传统Flex应用程序交互的HTML控件.Flex应用程序中的所有回调都必须附加到DOM窗口.

例如(在AS3中)

ExternalInterface.call("save", data);
Run Code Online (Sandbox Code Playgroud)

将会通知

window.save = function(data){
    // want to update a service 
    // or dispatch an event here...
}
Run Code Online (Sandbox Code Playgroud)

在JS resize函数中,我想发送一个控制器可以听到的事件.似乎创建服务是最佳选择.你能从AngularJS外部更新服务吗?控制器可以监听服务中的事件吗?在一个实验(点击小提琴)我做了似乎我可以访问服务,但更新服务的数据不会反映在视图中(在示例中<option>应该添加到<select>).

谢谢!

javascript actionscript-3 externalinterface angularjs

180
推荐指数
6
解决办法
9万
查看次数

集成Fabricjs和Angularjs

我正在尝试构建一个在屏幕上编辑简单图形的应用程序,fabricjs是我使用的画布库,而angularjs是我使用的MVW框架.

现在,从DOM到结构的绑定工作得很好(我单击一个div,画布上的相应对象被选中),但不是相反.当我单击画布上的对象时,它被选中,相应的DOM不会更新.我在这里读过我应该使用的$scope.$apply();,但我不知道该把它放在哪里.

如何进行结构更新$scope状态?

您可以在此处查看代码,单击Add Rect按钮将元素添加到画布,并注意到当您单击右侧的元素名称时,它会在画布上被选中,但如果您直接在画布上选择它,则它的按钮不是高点亮.

代码:http://plnkr.co/edit/lMogPGjJOXx9HLAdiYqB

fabricjs angularjs

7
推荐指数
1
解决办法
7575
查看次数

在不使用"angular.element.scope"的情况下从AngularJs外部更新范围

我希望能够从Angular之外的函数更新Angular中的范围.

例如,如果我有一个返回成功回调的jQuery插件,我希望能够从该成功回调更新范围.我见过的每个解决方案都涉及调用angular.element(selector).scope然后调用$apply返回的作用域.但是,我也看到很多评论表明,当调试信息关闭时这不起作用,因此不推荐,但我还没有看到任何替代解决方案.

有没有人知道如何在不使用Angular之外更新范围angular.element(selector).scope

以下是帖子中接受的解决方案:

" $scope.$apply()如果你想从AngularJs控件之外对范围值进行任何更改,就像jQuery/javascript事件处理程序一样,你需要使用它.

function change() {
    alert("a");
    var scope = angular.element($("#outer")).scope();
    scope.$apply(function(){
        scope.msg = 'Superhero';
    });
}
Run Code Online (Sandbox Code Playgroud)

.scope()当帖子中的调试数据关闭时,这是一个不起作用的警告:

"根据使用的文档,FYI .scope()要求启用调试数据,但出于速度原因,不建议在生产中使用调试数据.下面的解决方案似乎围绕范围() - rtpHarry 2014年12月5日15:12"

我没有看到在这篇文章或其他类似帖子中使用.scope()的替代解决方案.

AngularJS从js函数外部访问范围

谢谢!

更新 一个不使用的可能解决方案angular.element(selector).scope是我FirstCtrl在窗口对象中使用的控制器中分配了范围.我注入$windowFirstCtrl控制器,并做了以下内容:

$window.FirstCtrlScope = $scope;
Run Code Online (Sandbox Code Playgroud)

然后从jQuery或其他JavaScript我可以做:

var scope=window.FirstCtrlScope;
scope.$apply(function () {
      // update the scope
});
Run Code Online (Sandbox Code Playgroud)

这是一个很好的解决方案还是有更好的解决方案来更新范围而不使用angular.element(selector).scope

谢谢!

javascript jquery scope angularjs

7
推荐指数
1
解决办法
642
查看次数

Angular JS 从控制器外部访问范围

所以我刚刚尝试将普通 JS 更改为角度,我想知道如何从另一个 .js 文件访问我的控制器范围。我环顾四周,尝试了几种方法,但没有成功。

我发现了类似的问题,如下所示

AngularJS。如何从控制器组件外部调用控制器函数

AngularJS 从外部 js 函数访问范围

我不想对范围值进行任何更改,而只是使用范围内的函数。关于如何从另一个 .js 文件中的控制器范围调用该函数有什么想法吗?

javascript angularjs cordova

3
推荐指数
1
解决办法
1万
查看次数