相关疑难解决方法(0)

AngularJS页面内的多个ng-app

我刚开始学习Angular JS并创建了一些基本样本,但是我遇到了以下问题.

我创建了2个模块和2个控制器.

shoppingCart -> ShoppingCartController
namesList -> NamesController
Run Code Online (Sandbox Code Playgroud)

每个控制器都有相关的视图.第一个视图呈现正常,但第二个不呈现.没有错误.

http://jsfiddle.net/ep2sQ/

请帮我解决这个问题.

也有可能在View中添加控制台以检查从Controller传递的值.

例如,在下面的div中我们可以添加console.log并输出控制器值

<div ng-app="shoppingCart" ng-controller="ShoppingCartController">
</div>
Run Code Online (Sandbox Code Playgroud)

angularjs

181
推荐指数
6
解决办法
23万
查看次数

AngularJS中的"命名空间"服务

AngularJS如何处理服务名称之间的冲突?例如,如果我声明了两个模块,每个模块包含一个名为'foo'的服务.如果我想创建可重用模块或想避免与其他第三方模块发生冲突,那么"命名空间"服务的好方法是什么?

angularjs

37
推荐指数
2
解决办法
2万
查看次数

如何使用不同模块中具有相同名称的两个AngularJS服务?

假设我有两个AngularJS模块,例如foobar,它们都定义了一个名为的服务baz.

在我的申请中,我依靠他们说:

var app = angular.module('app', [ 'foo', 'bar' ]);
Run Code Online (Sandbox Code Playgroud)

然后我可以尝试使用baz控制器中的服务

app.controller('blaController', [ '$scope', 'baz', function($scope, baz) {
  // ...
}]);
Run Code Online (Sandbox Code Playgroud)

如何定义我想要使用的两种服务中的哪一种?有没有像完全合格的名字?

angularjs angularjs-service angularjs-module

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

如何从不同的模块引用具有相同名称的值

如果我有一些定义相同value对象的模块:

var m1 = angular.module('m1', []);
m1.value('test', 'AAA');

var m2 = angular.module('m2', []);
m2.value('test', 'BBB');
Run Code Online (Sandbox Code Playgroud)

注意m1,m2两者都具有相同的值test.

然后在主模块中,我依赖于它们两个:

var app = angular.module('angularjs-starter', ['m1','m2']);

app.controller('MainCtrl', function($scope, test) {
  $scope.test = test;
});
Run Code Online (Sandbox Code Playgroud)

HTML非常简单:

<body ng-controller="MainCtrl">
 [{{test}}]
</body>
Run Code Online (Sandbox Code Playgroud)

它将显示[BBB]在最后一页.我可以看到该值testm1已经的一个推翻m2.

你可以在这里看一个现场演示:http://plnkr.co/edit/u7u8p0nYqq9CvNxWKv5G?p = preview

有没有什么办法来显示的值test都来自m1m2在同一页面中?

angularjs

12
推荐指数
1
解决办法
2350
查看次数

防止第三方工厂使用相同名称干扰我的应用程序工厂

我在我的应用程序中使用angular-bootstrap-colorpicker,我遇到了一个奇怪的问题.colorpicker模块有一个名为的工厂Slider.这导致颜色选择器无法工作,因为我的应用程序也有一个名为的工厂Slider.不可能在应用程序中重构每一次这样的事情,无论如何它似乎是一个草率的解决方法.抛出的错误是

未捕获的TypeError:Slider.setSaturation不是函数

我得出的结论是因为我的应用程序的工厂没有方法setSaturation而Angular被"混淆"了.我对工厂以及Angular如何组织它们并不是很了解,但似乎很奇怪它们可以在这样的模块之间使用.例如

angular.module('thomasApp', [])
...
.factory('Slider', ...
Run Code Online (Sandbox Code Playgroud)

受到影响

angular.module('colorpicker.module', [])
...
.factory('Slider', ...
Run Code Online (Sandbox Code Playgroud)

或相反亦然.

有没有我可以划分这个颜色选择器,以便它不会干扰我的Slider工厂?

编辑:

我同意链接的答案,即使用前缀作为命名空间是一个聪明的主意.然而,这将需要不切实际的重构量.我很欣赏下面的答案,但它并没有足够的充实让我能够付诸行动.

1)这真的是最好的解决方案(除了项目开头的前缀)吗? - 如果我做这样的改变,下次我做凉亭更新时会删除它,还是有人拉下我的项目并安装了凉亭?

2)有更好的方法吗? - 如果没有,是否可以扩展当前的答案并解释发生了什么?

javascript factory color-picker angularjs

9
推荐指数
2
解决办法
328
查看次数

AngularJS module.constant():如何仅在模块内定义常量?

在页面上,我有几个Angular模块.对于每个模块,我定义一个包含模块版本的常量.

var module1 = angular.module('module1').constant('version', '1.2.3');
var module2 = angular.module('module2').constant('version', '2.0.0');
...
Run Code Online (Sandbox Code Playgroud)

我虽然模块中定义了一个常量.但是当我在module1中使用常量时,我得到的值是'2.0.0'......

有没有办法定义一个适合模块的常量(或其他任何东西)?

编辑:对于替代解决方案,您能否解释一下如何使用它,例如在控制器声明中?

module2.controller('myCtrl', function( $scope, $http, $q, ..., version ){
    // Here I can use the constant 'version'
}
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

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