【问题标题】:Modifying factory value in directive Angular在指令 Angular 中修改工厂值
【发布时间】:2015-01-09 18:06:28
【问题描述】:

我有以下代码:http://codepen.io/Andarius/pen/Ggryge

当用户绘制“crop_area”时,crop 按钮不应再被禁用。
为什么绘图时没有更新值no_crop_area(来自Image 工厂)?
是范围问题吗?

另外,我对 AngularJS 还是很陌生,想知道将工厂传递给控制器​​(如果有的话)的最佳做法是什么

给定一个工厂:

myApp.factory('myFactory', function () {
    return {foo:{bar:2}};
});  

这样做更好吗:

myApp.controller('myCtrl', ['myFactory',function (myFactory) {
    var self = this;
    self.foo = myFactory;
    self.bar = myFactory.bar;
}]);

myApp.controller('myCtrl', ['myFactory',function (myFactory) {
    var self = this;
    self.foo = myFactory;
    self.bar = self.foo.bar;
}]);

【问题讨论】:

    标签: angularjs controller scope factory directive


    【解决方案1】:

    我已经分叉了你的代码。这是一个工作的。 http://codepen.io/anon/pen/qERpew?editors=101

    该按钮未启用,因为您正在使用 javascript 事件处理程序执行与创建裁剪区域相关的所有处理,因此与 $scope 相关的代码(即 .angular 相关)将不会生效。要使它们生效,您必须将与 $scope 相关的代码包装到 $scope.$apply(function(){ // Your $scope variable update code.}) 中。

    PS:按照惯例,你不应该在指令中使用 $scope 名称。而不是使用范围。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-02
      • 1970-01-01
      • 2015-08-11
      相关资源
      最近更新 更多