通过AngularJS中的服务自动触发函数。

18 浏览
0 Comments

通过AngularJS中的服务自动触发函数。

大家好,我正在使用angulrajs,通过服务在一个控制器中传递一个值到另一个控制器。目前一切正常,但我的需求是当服务的值在控制器2中改变时,我想在一个作用域中获取服务的值,当作用域的值改变时,我需要触发一个名为refresh的函数。我需要在这里调用刷新函数。这是我的fiddle链接:

https://jsfiddle.net/ctawL4t3/10/

0
0 Comments

在AngularJS中实现通过服务自动触发函数的问题可能出现的原因是:在页面刷新后,服务的值会变为null,但是需要获取之前输入的值。

解决方法是:可以使用localStorage来存储值,在刷新或ng-change事件中使用。使用localStorage非常简单,可以查看localStorage的文档了解如何存储和访问值。使用localStorage可以在页面重新加载时保留值。

相关的讨论和解决方案可以在stackoverflow的链接中找到:stackoverflow.com/questions/43850413

0
0 Comments

问题的原因是当点击按钮时,函数才会触发,但我需要当控制器1的值发生变化时自动刷新函数,需要如何实现。

解决方法是可以将函数附加在ng-change指令上或使用$watch

下面是一个使用AngularJS中的服务来自动触发函数的示例:

首先,可以尝试使用AngularJS默认的$emit$broadcast方法,或者尝试在自己的服务中创建两个简单的函数:

angular.module('app').factory('StoreService', function() {
  var listeners = {};
  var emit = function(name, val) {
     if(listeners[name]) {
        listeners[name](val)
     }
  }
  var on = function(name, callback) {
       listeners[name] = callback;
  }
  return {
    emit: emit,
    on: on,
    storedObject: ''
  };
});

然后,可以使用以下链接的JSFiddle示例进行参考:示例1示例2(使用$watch)、示例3(使用ng-change更好,因为可以轻松使用debounce)。

最后,可以根据需要更新回答。可以将函数附加在ng-change指令上或使用$watch方法。

0
0 Comments

问题的出现原因是需要在一个AngularJS应用中的两个控制器之间调用函数。解决方法是使用AngularJS的广播机制,通过$rootScope的broadcast函数来实现。

首先,在第一个控制器中,我们使用$rootScope的$on函数监听"CallParentMethod"事件,并在事件触发时调用parentmethod函数。

其次,在第二个控制器中,我们定义了childmethod函数,该函数通过$rootScope的$emit函数触发"CallParentMethod"事件。

通过这样的操作,第二个控制器就能够触发第一个控制器中的parentmethod函数了。

以下是完整的代码示例:

app.controller('One', ['$scope', '$rootScope',
    function($scope, $rootScope) {
        $rootScope.$on("CallParentMethod", function(){
           $scope.parentmethod();
        });
        $scope.parentmethod = function() {
            // 任务代码
        }
    }
]);
app.controller('two', ['$scope', '$rootScope',
    function($scope, $rootScope) {
        $scope.childmethod = function() {
            $rootScope.$emit("CallParentMethod", {});
        }
    }
]);

通过这种方式,我们就可以在AngularJS应用的两个控制器之间调用函数了。

0