Javascript 从隔离作用域angularjs更新服务属性
如何从隔离范围修改服务的值 在我的代码中,我希望通过服务属性将默认日期更改为其他日期 我的指示:Javascript 从隔离作用域angularjs更新服务属性,javascript,angularjs,Javascript,Angularjs,如何从隔离范围修改服务的值 在我的代码中,我希望通过服务属性将默认日期更改为其他日期 我的指示: app.directive('ExampleDirective',['myService',function(myService){ return { restrict: 'E' templateUrl: '/path/to..' scope : { currentDate: "=" , lastDate : "="
app.directive('ExampleDirective',['myService',function(myService){
return {
restrict: 'E'
templateUrl: '/path/to..'
scope : { currentDate: "=" ,
lastDate : "="
}
link : function (scope,element,attr){
var date = scope.lastDate;
scope.$watch('currentDate',function(newDate,oldDate){
LastDate.defaultDate = newDate ;
}
}
}]);
还有我的简单服务:
app.factory('LastDate',function(){
return {
defaultDate : new Date()
}
});
Link不是合适的地方。我更喜欢用控制器来做这件事。如果有问题,请在$scope.$apply(function(){assign here})内使用赋值。这是一个已知的问题。在link或指令的controller中编写此函数有什么区别?没有区别。控制器首先运行,链路其次运行。在CLINK上运行更多链接不会发生冲突,但如果双向绑定未发生,并且您希望运行摘要循环,则由于$scope而被卡住。$apply不会正确触发监视和摘要。有两种方法可以解决此问题。在您的工厂中创建一个分配新日期的函数,在控制器中调用watch并调用工厂新日期分配的函数,并循环timeoutLink中的watch函数不是执行此操作的正确位置。我更喜欢用控制器来做这件事。如果有问题,请在$scope.$apply(function(){assign here})内使用赋值。这是一个已知的问题。在link或指令的controller中编写此函数有什么区别?没有区别。控制器首先运行,链路其次运行。在CLINK上运行更多链接不会发生冲突,但如果双向绑定未发生,并且您希望运行摘要循环,则由于$scope而被卡住。$apply不会正确触发监视和摘要。有两种方法可以解决此问题。在您的工厂中创建一个分配新日期的函数,在控制器中调用watch并调用工厂的新日期分配函数,并在超时时循环watch函数