问题标签 [controlleras]

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.

0 投票
2 回答
294 浏览

javascript - 在指令中使用 controllerAs 语法放置点击处理程序的位置

在 AngularJS 中使用 controllerAs 语法时,为 ng-click 等定义处理程序的最佳位置是什么?在控制器上还是在作用域上(在链接函数中定义)?

那么,您是否使用:

或者:

我实际上喜欢第二个,因为现在控制器只分配值并且事件处理是在链接函数中完成的。

无论如何......让我知道你的想法是什么。

0 投票
2 回答
1635 浏览

angularjs - 使用 ui-router + 自定义指令加载两次控制器

我正在尝试将自定义指令带到我的主页,该指令将打印一些输出。在我的 devtools 的网络选项卡中,我刚刚看到我的控制器加载了两次。

控制器:

指示:

ui-router 状态:

我只想在指令中使用我的 homeCtrl,但似乎状态提供程序也会加载它并使其加载两次。如果我从指令中删除控制器,那么我无法访问 homeCtrl,如果我从 stateprovider 中删除 homeCtrl,那么我无法访问 home.tpl.php

home.tpl.php:

任何想法?

0 投票
2 回答
2512 浏览

angularjs - Angularjs+Typescsript:上传文件的最佳方法(使用控制器语法)

我在下面有一个工作示例,但我认为这不是正确的方法!

我的要求是:

  • 我不想使用外部插件!
  • 使用控制器语法
  • 使用打字稿

html:

控制器:

最后一点:

  • in uploadFile():this被引用,$scope所以我必须以某种方式传递控制器实例才能访问MessageUploadand get()。甚至在get()功能this上也被提及$scope

有谁知道如何重构它以实现上传和this用作对控制器的引用。

0 投票
3 回答
1676 浏览

angularjs - ngrepeat 别名 as 和控制器 as

当我尝试使用 ngRepeat 别名作为语法而控制器作为语法时,我收到此错误https://code.angularjs.org/1.3.16/docs/error/ngRepeat/badident :

这是不允许的还是我做错了什么?

0 投票
3 回答
59 浏览

angularjs - 如何正确使用隔离范围属性?

如何正确使用隔离范围属性?

我有一个指令,它是从页面控制器调用的,并带有一个item传递给它的属性,例如<my-directive item="myItem"></my-directive>,包含一个id.

下面的代码将不起作用,因为它似乎$scope.item在控制器中未定义..就像我使用它太快了一样。当我想使用它时,如何确定它实际上已设置?

0 投票
2 回答
470 浏览

javascript - 单元测试 ControllerAs 与 AngularJS 中的表单

我对 Angular 有以下情况:

Controller

具有表单并使用此控制器的模板

Template

我不得不说我通常很困惑为什么Angular没有更好的方法将表单添加到控制器而不是自动添加this.formor $scope.form,这取决于您使用控制器的方式,但我猜这是另一个问题。

我现在遇到的真正问题是我不确定我应该如何测试它。如果我只是在测试中实例化控制器,那么我的表单是未定义的

$controller('Controller as ctrl')

我确实找到了一种方法,只需编译模板

但是因为ng-controller在模板中开始了一个新的范围,我不能直接访问控制器$scope.ctrl,而是我必须做类似的事情$scope.$$childHead.login

...我觉得它变得太复杂了。编辑:更不用说 $$ 表示“私有”属性。

0 投票
1 回答
5926 浏览

javascript - AngularJS 1.4:如何使用 bindToController 和 controllerAs 语法创建双向绑定

好吧,这真的让我很烦。我有一个具有隔离范围的指令,使用controllerAs语法和bindToController

假设这样的用法:

...我希望 的值vm.foo双向绑定到foo属性的值。相反,它是undefined.

的值vm.bar等于bar我期望的 HTML 元素的属性值。

当我尝试更改vm.bar使用过滤器的值时,没有任何更改持续存在。

当我将过滤后的值存储vm.bar到一个新变量时vm.baz,它会按预期工作。

这是一个小提琴

所以我的问题有两个部分:

A) 为什么vm.foo使用时 undefined的值'='

B)为什么我不能更改vm.bar控制器范围内的值,即使该更改不会传播到 HTML 元素属性(它不应该传播,因为我正在使用'@')?

0 投票
0 回答
139 浏览

javascript - AngularJS:ngOptions 不起作用(包括 ngModel,使用“控制器作为”语法)

我会保持简短。

http://codepen.io/anon/pen/waXWpw?editors=101

这是我做的东西,希望能说明我的问题(我也希望 Plunker 能正常工作......)。第一个下拉菜单是我的尝试,另一个是我从另一个不再在这里工作的工作 Plunker 那里得到的......

我根本无法弄清楚这不起作用的原因。本质上,我希望用户能够从下拉列表中选择多轮,但无论我尝试什么,我都无法让 ngOptions 发挥作用。我只是在下拉列表中得到“未定义”,没有其他选项出现。


编辑:我修复了 Plunker,突然 ngOptions 开始工作,所以现在我的问题是我不知道如何复制我的问题。我必须在此处包含我的实际代码,以查看是否有人能发现错误。

需要明确的是,页面上的所有其他内容都运行良好,包括 ngMessages、ngAnimate、Angular UI 和其他表单元素,因此我将仅包含相关的 HTML。

HTML:

JS(控制器):

0 投票
2 回答
4782 浏览

angularjs - 角度控制器作为父控制器中的监视变量

我如何查看绑定到父控制器的变量?

watch-Function 无法识别父标题的更改..

谢谢!:)

0 投票
0 回答
110 浏览

angularjs - 在Angular中使用controllerAs语法时如何在父范围上对变量进行单元测试?

我正在尝试对使用 AngularcontrollerAs语法的控制器进行单元测试。我还使用它来访问父作用域中的变量。例如,如果父控制器被调用parent,而子控制器被调用child,那么在孩子的视图中我会做 eg ng-if="parent.model.age > 12"

现在,我想对此进行单元测试。我在单元测试中创建了控制器,如下所示:

但据我所知,这不允许我访问 ParentController 上的变量?有没有办法在 Angular 中做到这一点?