问题标签 [angularjs-controller]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angularjs - Angularjs中从指令到控制器的通信
我是 angularjs 的新手。我有以下代码,现在我想访问控制器中的地图对象。在这里我不知道,如何将它传递给控制器?
我的自定义指令:
javascript - Angular ngController 与在指令中构建的控制器
我想知道这两种创建控制器的方法的用例是什么:
使用 ngController:
在具有控制器属性的指令中构造控制器:
如果它们都在同一个元素上调用,您是否有任何理由不在指令中构造控制器?
这仅仅是控制器的广泛使用/复杂程度的问题吗?
angularjs - AngularJS 控制器通信
我不确定我是否以正确的方式做我需要的事情......我有 2 个控制器:
SiteMenuCntl和DashboardCntl
SiteMenuCntl 绑定到一个 UL 标记,它是站点的菜单。默认情况下它是隐藏的,在凭据验证和加载 DashboardCntl 之后,菜单应该会变得可见。
我试过这个:
但是事件 showTree 永远不会被触发。我在哪里做错了?有没有更好的方法来做到这一点?
javascript - 如何编写通用 Angular JS 控制器逻辑?
我正在使用 Angular JS 为需要能够处理动态表单生成的 SPA 进行概念验证。这个项目本质上是一个面试风格的应用程序,它将让用户通过多个屏幕来回答要针对服务器进行评分的问题。我正在尝试编写一个可以处理任何采访页面的通用控制器,它从服务器调用中获取实际的页面内容(视图显然是特定于页面的)。我可以通过将返回的数据包装在包含变量中来相当轻松地处理页面内容,这样我的视图只需使用 JSON 访问该根变量和路径
示例(pageData 是通用容器变量):
当我想集成一些比简单数据输出更复杂的东西时,问题就出现了——比如ngTable指令来实现分页或排序到标准表。对此的逻辑应该包含在控制器中。所以我的问题是是否有可能使我的控制器足够通用,以便我可以查看我的 JSON 响应并在我的控制器中创建一段或多段动态代码来创建一些符合ngTable的内容?基本上,检查我的响应中是否有任何数组具有可用作表设置的属性对象,并让控制器遍历所有 JSON 以找到这些。
作为参考,这里是控制器中 ngTable 所需的代码,根据上面的链接。
angularjs - 如何通过递归要求访问父指令的控制器?
我正在尝试以递归方式到达父“框”指令的控制器:
我希望控制器变量undefined
在链接函数中,但我得到了实际盒子指令的控制器。
所以我的问题是......在这种情况下如何访问 PARENT 控制器:
angularjs - AngularJS 通用控制器功能 - 在需要的地方混合或在 $rootScope 上定义?
我正在使用 AngularJS 的 v1.2.0 rc2 并且想知道为多个控制器提供通用功能的最佳方法是什么。
我想在编辑模型的所有控制器中使用以下验证函数:
我想让我的控制器保持干燥,所以我定义了一个工厂,如下所示:
最初,我只是将工厂混合到需要它的控制器中,如下所示:
但我意识到我可以将它们添加到模块运行方法中的 $rootScope 中,如下所示:
现在它们可以不加选择地在每个控制器中使用,并且需要做的接线更少。
视图模板中使用的函数如下:
我的问题是:
- 我应该避免向 $rootScope 添加常用功能吗?如果是这样,有什么陷阱?
- 仅在必要时混合通用功能会更好吗?
- 有没有更好的方法来达到同样的结果?
更新的解决方案
我选择使用自定义指令,而不是向 $rootScope 添加函数,因为它有一股难闻的味道。
我创建了自定义属性validation-class-for="<input.name>"
,disabled-when-invalid
因此标记如下所示:
这些指令只需要一个表单祖先并观察一个函数来确定状态。
现在也不需要验证工厂。
javascript - 组织一个 AngularJS 控制器
我是 AngularJS 世界的新手,来自 Backbone 背景。到目前为止,我很喜欢它,但两者在架构实践方面存在很大差异(有人应该为此写一篇文章,哈哈)。
我开始构建一些相当大的控制器,但感觉不太对劲。例如,这是一个处理执行搜索和填充 ng-grid 控件以及无限滚动此网格的基本控件。
我知道,在所有变量初始化、私有方法和一般初始化方法之间,它很多而且对我来说有点非结构化。它对我来说并不简洁和确定性,这是我喜欢 Backbone 的一点。有人对更好的方法有任何反馈吗?谢谢!
angularjs - 在 Angular 中加载模块
我是 AngularJS 的新手。在我努力学习的过程中,我依赖于 AngularJS 教程。现在,我正在尝试使用 AngularSeed 项目模板构建一个应用程序。我正在努力使我的项目尽可能模块化。出于这个原因,我的控制器被分成几个文件。目前,我有以下内容:
我的 app.js 文件具有以下内容:
我的 loginCtrl.js 文件目前非常基本。它只有:
我的 homeCtrl.js 几乎是一样的,除了名字。它如下所示:
我的 index.html 文件是 angularSeed index-async.html文件。但是,当我加载依赖项时,我有以下内容:
我的问题是,有时我的应用程序可以工作,有时却不能。这几乎就像在其他东西之前加载了一些东西。
有时,我会收到此错误。其他时候,我在控制台窗口中收到错误消息:loginCtrl.js 中的“未捕获的 ReferenceError:应用程序未定义”。有时它会发生在 homeCtrl.js 上。
我究竟做错了什么?感觉就像我需要将我的控制器放在一个模块中,并在 app.js 文件中的 app.config 中传递该模块。但是,a)我不确定这是否允许,b)我不确定该怎么做。
javascript - $watch 的对象在属性更改时未触发
我有一个对象:
$scope.obj = {bar: 'bar value', foo: 'foo value'};
我想知道 bar、foo 或两者是否都发生了变化。
我正在这样做:
$scope.$watch('obj', function() { console.log("watching obj") });
如果我更改对象的属性“正在观看 obj”消息它永远不会显示。但是,如果我观看'obj.foo'
或'obj.bar'
我可以看到该消息。所以,问题是:
为什么我观看时没有显示消息'obj'
?我该怎么做?
这个plunker更好地显示了这个问题......