问题标签 [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.

0 投票
2 回答
78 浏览

javascript - 使用控制器作为语法只会更新其中一个范围

当涉及到语法时,我有点困惑,controller as因为我以前从未使用过它。我想知道解决这个问题的正确方法。搜索时无法找到类似的问题。

我有一个菜单和一个切换菜单的按钮。菜单有自己的范围,按钮有另一个,因为它们存在于两个单独的文件和容器中。

当我单击按钮时,它只会更新nav.isActive按钮范围内的。我创建了一个用于存储状态的服务,当我想到它时我不应该这样做.. 我应该吗?因为观察该值是否发生变化的唯一方法是使用观察者,这需要我使用,$scope因为this没有该$watch功能,但是,我想尽可能避免这种情况,因为它会影响性能,即在这个项目中很重要。

controller as使用语法时从另一个“范围”更新“范围”变量的正确方法是什么?

控制器:

将值从一个范围传递到另一个范围的服务:

菜单标记(menu.html):

切换菜单的按钮(header.html):

0 投票
0 回答
72 浏览

angularjs - 参数“ClockOnController”不是函数,未定义

嗨,我在将控制器重构为自己的片段时遇到了一些问题

我希望控制器从我的初始应用程序声明中继承依赖项。

我需要这些依赖项流经我的控制器。

创建未知的提供程序错误——我假设依赖项没有向下流动——

创建未定义的函数“控制器名称”错误-在这种情况下,我假设我正在重新定义应用程序并因此失去其他控制器-

这是两个控制器

我的索引文件

错误参数“ClockOnController”不是函数,未定义

0 投票
1 回答
430 浏览

javascript - AngularJS controllerAs:更新 $interval 中的控制器字段不会更新 ng-show

我正在使用 controllerAs 语法,并且由于某种原因,在 $interval 中更新控制器的字段时,它不会正确显示/隐藏视图中的元素。我使用 Angular 的 UI 路由器。

这个问题最好用我认为的代码来描述,所以请原谅代码转储。

我的状态(“refreshLogs”只是一个调用 logService 以获取更新日志的函数):

我的控制器:

最后是视图:

它会在 DOM 更新中显示“ng-show”值,但不会根据该值显示/隐藏元素。我在 Chrome 中检查了 DOM,我看到了这一点(添加星号以强调):

一开始是正确的,并且显示了正确的 div。几秒钟后,日志被刷新,“vm.log”变量被设置为一个非空值(我知道这是因为我在分配这个值的 JS 代码中设置了一个断点,它看起来是正确的)。之后,我再次检查 DOM 并看到:

注意显示正确值的“ng-show”属性。因此,表达式显然已被重新评估。但是,旧的“等待日志...”标题仍然显示,并且第一个 div 没有显示(并且它仍然应用了“ng-hide”css 类)。

我在这里想念什么?

0 投票
1 回答
177 浏览

angularjs - 带有 ES6 控制器的 Angular 行为异常

这是一个糟糕的标题。我意识到。那是因为我不完全确定如何问这个问题。我有两个基本相同的类,行为略有不同,controllerAs: 'vm'在状态配置中对应的每个类的行为也不同,Webstorm 在其中一个而不是另一个中发出令人困惑的“此方法可以是静态的”警告.

索引.html

应用程序.js

main.js

main.html

主控制器.js

投资组合.js

投资组合.html

投资组合.controller.js

一如既往,我非常期待您的想法和评论。

0 投票
2 回答
1537 浏览

angularjs - 初始化角度控制器变量

我遇到了一个问题,即我的控制器变量没有按照控制器代码正确初始化。

控制器代码是

ui路由器是

我有一个验证基本 html 来显示模型的输出:

在 chrome 中调试代码时,它会通过控制器代码并正确设置模型和数据,但是当页面完成加载时,vm.model 是空白的。我不确定我做错了什么。

提前致谢。

0 投票
1 回答
684 浏览

angularjs - 使用 ControllerAs 时出现 Angular 嵌套指令的问题

我正在构建一个巨大的表单,它调用各种指令来构建一个完整的表单。调用 Form Builder 的 Main Page 传递 ng-model 数据,如下所示:

然后表单构建器页面调用各种子指令来构建表单的各个部分:

在控制器中使用$scope时,我可以毫无问题地访问$scopein 子指令,如下所示:

但是自从我摆脱$scope并开始使用以来ControllerAs,我在访问与父子控制器的 2 路绑定时遇到了各种麻烦。

无论我尝试什么,我都会遇到障碍。我尝试过的事情是:

  1. 隔离范围:我尝试将formData.formFieldsformData.photoFields作为隔离范围传递给子指令,但是由于嵌套的隔离范围,我最终得到了$compile: MultiDir错误,所以这是不可能的。
  2. 如果我没有为每个表单部分设置单独的指令,并且将它们全部放在指令下的 1 个formBuilder指令中,那么它就会变成一个庞大的指令。以上只是一个草图,但每个子指令最终构建了一个大表格。因此,将它们合并在一起确实是最后的手段,因为它确实变得难以维护且不可读。
  3. 到目前为止,我认为没有任何其他方式可以 ControllerAs从子指令访问父指令。Controller
  4. 如果我在子指令模板的 ng-model like 中使用父级的 ControllerAs <input type=“text” ng-model=“fb.formData.formFields.text" />,那效果很好,但是我需要从子指令的控制器中访问它以进行一些我无法执行的处理。
  5. 如果我摆脱 controllerAs$scope再次使用,它就像以前一样工作,但我试图$scope完全摆脱它,为未来的 Angular 更改做好准备。

由于它是一种高级表单,我需要有单独的指令来处理各种表单部分,并且由于自 Angular 1.2 以来不允许嵌套隔离范围,因此它变得更加困难,尤其是在试图摆脱$scopeusing ControllerAs.

有人可以指导我在这里有什么选择吗?感谢您阅读我的长文。

0 投票
3 回答
1884 浏览

javascript - 如何在angularjs中观察这个变量

我不知道如何在 angularjs 中查看绑定到该变量的变量。

这是我尝试过的。

在 html 中,

在 app.js 中

和 plunker链接相同。

我可以看text1,但我不能看text1。

谁能解释一下如何观看text1?

提前致谢

0 投票
2 回答
150 浏览

javascript - 角度“控制器作为语法”“this”数据

我不明白我错过了什么

我没有在 html 上得到结果我认为这个问题用controllerAs语法管理

注意:我可以在控制台中看到结果console.log(this.movie); - 它来自控制器

应用程序.js

控制器.js

html - 模板/detail.html

我的尝试

0 投票
0 回答
385 浏览

angularjs - 将 ngModel 传递给 controllerAs 组件中的指令

从使用 controllerAs 声明的指令中,我想将范围变量传递给嵌套指令,该指令将在其中使用。我希望“内部”的任何变化都反映在外部,反之亦然。

通过隔离范围获取变量不是一种选择,因为 controllerAs 指令已经要求隔离范围。在此处查看示例

我在内部指令中提出了这个:

-如下例所示,但它看起来很hacky。如何做到最好?

0 投票
1 回答
191 浏览

angularjs - 如何在 AngularJS 的指令模板中使用 controllerAs 语法

这是我的控制器:

我的指令:

结果是:

是我使用控制器的问题还是我遗漏了一些东西。谢谢你。