问题标签 [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.
javascript - 在指令中使用 controllerAs 语法放置点击处理程序的位置
在 AngularJS 中使用 controllerAs 语法时,为 ng-click 等定义处理程序的最佳位置是什么?在控制器上还是在作用域上(在链接函数中定义)?
那么,您是否使用:
或者:
我实际上喜欢第二个,因为现在控制器只分配值并且事件处理是在链接函数中完成的。
无论如何......让我知道你的想法是什么。
angularjs - 使用 ui-router + 自定义指令加载两次控制器
我正在尝试将自定义指令带到我的主页,该指令将打印一些输出。在我的 devtools 的网络选项卡中,我刚刚看到我的控制器加载了两次。
控制器:
指示:
ui-router 状态:
我只想在指令中使用我的 homeCtrl,但似乎状态提供程序也会加载它并使其加载两次。如果我从指令中删除控制器,那么我无法访问 homeCtrl,如果我从 stateprovider 中删除 homeCtrl,那么我无法访问 home.tpl.php
home.tpl.php:
任何想法?
angularjs - Angularjs+Typescsript:上传文件的最佳方法(使用控制器语法)
我在下面有一个工作示例,但我认为这不是正确的方法!
我的要求是:
- 我不想使用外部插件!
- 使用控制器语法
- 使用打字稿
html:
控制器:
最后一点:
- in
uploadFile()
:this
被引用,$scope
所以我必须以某种方式传递控制器实例才能访问MessageUpload
andget()
。甚至在get()
功能this
上也被提及$scope
。
有谁知道如何重构它以实现上传和this
用作对控制器的引用。
angularjs - ngrepeat 别名 as 和控制器 as
当我尝试使用 ngRepeat 别名作为语法而控制器作为语法时,我收到此错误https://code.angularjs.org/1.3.16/docs/error/ngRepeat/badident :
这是不允许的还是我做错了什么?
angularjs - 如何正确使用隔离范围属性?
如何正确使用隔离范围属性?
我有一个指令,它是从页面控制器调用的,并带有一个item
传递给它的属性,例如<my-directive item="myItem"></my-directive>
,包含一个id
.
下面的代码将不起作用,因为它似乎$scope.item
在控制器中未定义..就像我使用它太快了一样。当我想使用它时,如何确定它实际上已设置?
javascript - 单元测试 ControllerAs 与 AngularJS 中的表单
我对 Angular 有以下情况:
Controller
具有表单并使用此控制器的模板
Template
我不得不说我通常很困惑为什么Angular没有更好的方法将表单添加到控制器而不是自动添加this.form
or $scope.form
,这取决于您使用控制器的方式,但我猜这是另一个问题。
我现在遇到的真正问题是我不确定我应该如何测试它。如果我只是在测试中实例化控制器,那么我的表单是未定义的
$controller('Controller as ctrl')
我确实找到了一种方法,只需编译模板
但是因为ng-controller
在模板中开始了一个新的范围,我不能直接访问控制器$scope.ctrl
,而是我必须做类似的事情$scope.$$childHead.login
...我觉得它变得太复杂了。编辑:更不用说 $$ 表示“私有”属性。
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 元素属性(它不应该传播,因为我正在使用'@'
)?
javascript - AngularJS:ngOptions 不起作用(包括 ngModel,使用“控制器作为”语法)
我会保持简短。
http://codepen.io/anon/pen/waXWpw?editors=101
这是我做的东西,希望能说明我的问题(我也希望 Plunker 能正常工作......)。第一个下拉菜单是我的尝试,另一个是我从另一个不再在这里工作的工作 Plunker 那里得到的......
我根本无法弄清楚这不起作用的原因。本质上,我希望用户能够从下拉列表中选择多轮,但无论我尝试什么,我都无法让 ngOptions 发挥作用。我只是在下拉列表中得到“未定义”,没有其他选项出现。
编辑:我修复了 Plunker,突然 ngOptions 开始工作,所以现在我的问题是我不知道如何复制我的问题。我必须在此处包含我的实际代码,以查看是否有人能发现错误。
需要明确的是,页面上的所有其他内容都运行良好,包括 ngMessages、ngAnimate、Angular UI 和其他表单元素,因此我将仅包含相关的 HTML。
HTML:
JS(控制器):
angularjs - 角度控制器作为父控制器中的监视变量
我如何查看绑定到父控制器的变量?
watch-Function 无法识别父标题的更改..
谢谢!:)
angularjs - 在Angular中使用controllerAs语法时如何在父范围上对变量进行单元测试?
我正在尝试对使用 AngularcontrollerAs
语法的控制器进行单元测试。我还使用它来访问父作用域中的变量。例如,如果父控制器被调用parent
,而子控制器被调用child
,那么在孩子的视图中我会做 eg ng-if="parent.model.age > 12"
。
现在,我想对此进行单元测试。我在单元测试中创建了控制器,如下所示:
但据我所知,这不允许我访问 ParentController 上的变量?有没有办法在 Angular 中做到这一点?