angularjs使用angular.extend将$scope绑定到服务坏/好实践
我想知道是否使用angularjs使用angular.extend将$scope绑定到服务坏/好实践,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我想知道是否使用 angular.extend($scope,MyService); 它是否违反了oop封装原则 闻起来像MyService.call($scope)吗 你能面对变量和函数的冲突吗 这是一种坏的/好的做法吗 通常,根据我的经验,服务被注入控制器,然后从该范围调用。我不会说使用extend对函数和属性进行复制一定不好,但它可能会减轻IoC(控制反转)的某些用途,这正是angular中的注入所基于的 它会破坏oop 我的理解是,您将从这个调用中获得直接在您的作用域上的附加函数和服务
angular.extend($scope,MyService);
它是否违反了oop封装原则
闻起来像MyService.call($scope)吗
你能面对变量和函数的冲突吗
这是一种坏的/好的做法吗
通常,根据我的经验,服务被注入控制器,然后从该范围调用。我不会说使用extend对函数和属性进行复制一定不好,但它可能会减轻IoC(控制反转)的某些用途,这正是angular中的注入所基于的
它会破坏oop
我的理解是,您将从这个调用中获得直接在您的作用域上的附加函数和服务调用。这并没有破坏OOP,因为作用域是一个对象,可以应用函数。如果这些函数+属性在范围上有意义,那么从这个角度来看,这似乎是一件很好的事情
闻起来像MyService.call($scope)吗
正如我在第一段中所说的,我不明白为什么不调用服务,共享数据或将对象引用传递给服务。angular中常见的另一种模式是使用承诺来处理范围中的返回数据。这看起来像:
MyService.callFunction(parameters).then(function (data) {
// process data here. Since this runs in $scope you can also use $scope normally.
// $scope.$apply() is in progress and will complete when the function returns
});
该服务所做的只是向作用域提供数据。重点是,我认为有比“扩展”更好的模式
你能面对冲突吗
在调用中angular.extend(a,b)代码>数据、属性和函数从b
复制到a
。如果a
上已经存在某个内容,它将被b
中的数据覆盖。所以从技术上来说,简短的回答是“是的”,你可以面对冲突
底线
因此,在一天结束时,这不是一个糟糕的模式,但可能有更多的常见模式我会首先尝试使用。首先感谢您的快速长时间回复:)通常我使用该方法是在服务中,只是在控制器中使用了很多道具/方法,因为它不太容易出错。[因此,归根结底,这不是一个糟糕的模式,但我可能会尝试使用更常见的模式来代替。]例如,什么?我想我很罗嗦:)…尝试的模式:(1)延迟承诺。(2)将数据传递到所需的服务中。(3)由于服务是单独的,您可以使用它们来在控制器之间或服务和控制器之间共享数据。再次,“扩展”不是坏主意-您只需要考虑什么对您的特定场景最有效。