问题标签 [angularjs-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.
angularjs - AngularJs: this 而不是 $scope: TypeError: this.* is not a function at *
尝试实现网络注册功能时,我遇到了一个问题。
老实说,我昨天刚刚在推送下阅读了一些关于 angularJs(以及一点关于 javascript)的文档。所以,请不要对我这么苛刻:)
以下是我的指令:
控制器:
这是以防万一的服务:
最后,问题是:
TypeError: this.setRegistering 不是 registerSuccess 的函数
它指向以下几行:
其他没关系,但我想在完成注册时调用它来隐藏进度圈。你能在这里给我提示吗?
我认为变量的范围出了点问题。但我不知道从哪里开始。
angularjs - 问题单元测试控制器作为:日志控制器返回一个承诺
我正在尝试测试使用 controllerAs 语法的控制器。我的问题是,当我尝试在控制器上测试一个函数时,我得到“预期未定义要定义”。
控制器(缩短版)
测试
当我运行测试时,这是我得到的输出:
运行“业力:单位”(业力)任务 PhantomJS 1.9.8(Mac OS X 0.0.0)日志:“警告:尝试多次加载角度。”
LOG: Promise{$$state: Object{status: 2, value: Error{message: ...}}} PhantomJS 1.9.8 (Mac OS X 0.0.0) PreflightCtrl 应该有一个名为 verifyDob FAILED 的已定义函数被定义。在 /Users/tracy/Projects/LemonaidClinic/src/views/preflight/preflight.controller.spec.js:80 PhantomJS 1.9.8 (Mac OS X 0.0.0) PreflightCtrl 应该验证 DOB FAILED TypeError: 'undefined' is not /Users/tracy/Projects/LemonaidClinic/src/views/preflight/preflight.controller.spec.js:85 PhantomJS 1.9.8 ( Mac OS X 0.0.0):执行 15 次中的 15 次(2 次失败)(0.006 秒/0.204 秒)警告:任务“karma:unit”失败。使用 --force 继续。
由于警告而中止。
第 80 行是这一行:expect(PreflightCtrl.verifyDob).toBeDefined();
第 85 行是这样的: PreflightCtrl.form.dob = '01/01/1990';
你可以看到第一行是控制器的日志,它返回一个承诺,这意味着控制器上没有需要存在的函数或变量。
我也不确定为什么 Angular 会尝试多次加载,但它似乎并没有影响任何其他测试。
我究竟做错了什么?
先感谢您。
javascript - 使用 controllerAs 语法和原型继承扩展 Angular 控制器
我正在尝试使用 conrollerAs 语法扩展控制器。我的父控制器和子控制器没有定义在同一个范围内,所以我把父控制器(BaseController
)放在一个服务中:
然后像这样使用它:
我ChildController
在ui路由器状态下使用。状态模板未加载,并且我在控制台中收到错误消息:
Resource for page controller is not defined <div class="ng-scope" ui-view="foo-view">
有任何想法吗?
javascript - Angular 控制器函数既是构造函数又是装饰器?
如果controller as ctrl
为以下代码编写 a:
下面的伪代码是否准确地描述了$scope
与 的区别controller
?
我的问题是:
- 上面的伪代码是否是范围与控制器对象不同的准确心理模型?
- 是否
function Controller(){}
同时是构造函数(用于控制器对象)和装饰器(用于范围对象)?
javascript - AngularJS $scope 和 Controller 作为语法真的没有区别吗?
我正在学习 angularJS,在学习的同时发现控制器作为语法更容易阅读,并且对于来自 OO 世界的我来说更容易理解。我已经阅读了几篇文章和 SO 答案,它们似乎都指向 $scope 和 'controller as ' 语法是相同的,并且 'controller as' 语法只是语法糖。
但是,我在这里发布了另一个关于 SO的问题,回答该问题的用户说即使我使用控制器作为语法,我仍然必须注入 $scope 才能使用“ui select”指令。它是哪一个?如果我不必使用 $scope,我缺少什么来让“控制器作为”语法与 ui-select 一起工作?
javascript - 将 $scope 数据从控制器传递到视图
我想在我的视图中显示$scope.predicate
和$scope.reverse
值(在<p>
标签中)。似乎使用{{ }}
表达式不起作用。
应用程序.js:
HTML:
javascript - Angular JS 使用 controllerAs 和 this 语法与范围或 this 变量
我一直遇到一个问题,它导致与控制器范围变量的定义不一致。
正如您可能知道的那样,使用controllerAs语法,您必须将所有变量与此实例附加到控制器函数中,如下所示:
现在的问题是this.translatefDromService不能从任何服务的成功或错误函数或事实上任何其他函数更新,因为它将 this 作为新函数的实例而不是控制器。
在这种情况下可以做什么。
我使用了一种解决方案,您将其标记为 vm。 var vm = this在控制器的开头,但除此之外还有什么解决方案吗?
干杯!
angularjs - (Angular)传递控制器实例以隔离范围
虽然下面的代码“有效”,但肯定感觉非常错误。有没有“最佳实践”的重构方式?问题是我将控制器的一个实例传递给一个隔离范围指令
(注意:我不能在指令中使用它:
控制器:'ViewController',controllerAs:'viewCtrl',
因为我需要相同的控制器实例..)
可能只是我一开始没有正确设置它,但很想知道是否有一种“重构”它的好方法
UI-路由器配置:
指令
angularjs - AngularJS: code not working when iterating through object
I am trying to populate a list of employee
objects from my controller empctrl
in a template.
Here's the controller:
However, this code that I wrote isn't working:
Nothing shows up in the UI.
Instead, if I write $scope.employees
in the controller, it works:
Since I know how tempting it is to do $scope.<everything>
in the controller, I'm trying to avoid using $scope
as much as possible.
If someone could demonstrate the proper use of $scope
and difference betwee alias.abc
and $scope.abc
(where alias
is an alias of controller), I'll be thankful.
Edit: Exact same question is this: 'this' vs $scope in AngularJS controllers
Thanks for this link, PankajParkar.