问题标签 [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 投票
1 回答
686 浏览

angularjs - 使用 controllerAs-Syntax 的回调中的这个引用

我正在开发一个 angularjs 项目,我正在尝试尽可能接近 angularjs 2 来实现它。

在 angularjs 2 中将不再有 ng-controller 和 $scope,所以我使用指令而不是 ng-controller。此外,我试图通过使用 controllerAs 语法来避免使用 $scope。

我的指令看起来像这样:

到目前为止一切正常。当我试图在回调函数中调用控制器上的方法或属性时,问题就开始了。在这种情况下,“this”不再引用实际的控制器实例。

例子:

有没有办法在回调中获取对我的控制器实例的引用,以便我可以在回调中使用控制器方法和属性?

0 投票
1 回答
1507 浏览

javascript - Angular:带有 bindToController 的指令“丢失”数据

我有actionButtons指令:

ActionButtonsController控制器:

他的模板的一部分,带有按钮:

这就是我在应用程序中的称呼:

问题是:正如您从控制器代码中看到的那样,例如actionsText不需要,如果不存在,它将被设置为Actions. itemDescription也不是必需的。但是,如果我指定itemDescription它在 HTML DOM 中一直可见,但Actions对我来说表现得很奇怪:它设置为默认值Actions,但在 HTML DOM 中不可见。这两者之间的区别在于明确地actionsText绑定this在控制器的代码中 - 但我认为这是默认行为,bindToController当我想在不存在值的情况下设置默认值时,我应该这样做。此外,当我调试它时(例如通过调用其中一个函数),actionsText它具有undefined价值,尽管如果我在创建它时对其进行调试,它已经设置了一个默认值Actions价值。它不适用于一次性绑定 (with ::) 和正常情况。也许它与scope: {}指令的代码有关,但我无法弄清楚,我希望能得到你的帮助 - 提前谢谢你。PS我尝试viewModel从控制器返回变量 - 它没有帮助。PS 2如果actionsText指定(as data-actions-text={{'Something'}}) ,效果很好

0 投票
0 回答
454 浏览

javascript - Angularjs - 在不使用 $scope 和使用 controllerAs 的情况下访问父控制器

我需要一种方法来访问控制器的父范围,而无需注入 $scope 来这样做。这背后的原因是我正在构建一个 SPA,并且我想根据当前页面将一个类应用于 body 元素。我不想仅仅为了改变类而将 $scope 注入我的每一个控制器。另外请让我知道我是否以错误的方式看待这个问题,是否有办法使用 $routeprovider 或服务来封装此功能。我最近才开始使用 Angular,所以如果解决方案真的很简单,我提前道歉,但我无法通过谷歌搜索找到与我的情况类似的任何东西。

这是基本设置:

索引.html

body.controller.js

联系人.controller.js

app.routes.js

0 投票
3 回答
4449 浏览

html - 在angularJS中使用带有'controller as'语法的ngRoute

我有以下configcontrollers

当我在index.html.

由于我不使用$scope,因此仅编写是{{pageClass}}行不通的。我怎样才能解决这个问题controller as syntax

编辑

我得到了几个很好的答案。如果您想controllerAs用不同的名称命名您的值,我还发现了另一种方法:hctrlactorctrl如我上面的代码):

您可以在 html 中执行此操作:

0 投票
5 回答
34637 浏览

angularjs - 将 ControllerAs 与指令一起使用

我在这里尝试遵循 John Papa 的 angularJS 样式指南,并开始将我的指令切换为使用 controllerAs。但是,这是行不通的。我的模板似乎无法访问分配给 vm 的任何内容。请参阅展示该行为的这个非常简单的 plnkr 示例。

http://plnkr.co/edit/bVl1TcxlZLZ7oPCbk8sk?p=preview

0 投票
1 回答
311 浏览

javascript - 使用没有 $scope 的 ControllerAs 语法与服务变量绑定?

我正在熟悉 AngularJS 中的 controllerAs 语法,当我需要对服务变量进行简单绑定时遇到了问题。通常 a $scope.$watchor$scope.$on会做,但这将涉及注入$scope,这似乎违背了控制器的目的。

目前我所拥有的是,在单击其中一个按钮并调用config.setAttribute(attr)之后,控制器调用服务的setAttribute功能,但不是getAttribute,所以config.attribute永远不会改变。

在我处理这个问题的过程中,有什么我忽略的吗?我需要注入$scope或更改控制器语法来$scope代替使用吗?

看法:

服务:

控制器:

0 投票
2 回答
444 浏览

javascript - AngularJS ControllerAs 语法和控制器注入变量

我正在写一个指令,并试图坚持John Papa 风格指南。所以我也决定跳上ControllerAs语法旅行车,我有一个小指令,如下所示:

这是一个时事通讯注册服务。我将不得不做一个 HTTP 请求,因此我将它注入到控制器中。一切都很好 - 但从vm.doSubmit(--formname-here--)模板调用函数导致我无法找到$http服务。

所以我的问题是:如何访问$httpdoSubmit()函数中注入的内容?

编辑

我将包括视图代码 - 但不用担心 - 管道工程:

编辑 2

事实证明,@Tek 是对的——代码有效。我认为我没有看到它的原因是(我认为)Chrome 中的 JS 运行时$http会在它知道它不会被调用时优化它。

code_works

这段代码工作正常。我认为这是因为运行时预先考虑$httpconsole.log()函数调用中的使用。但是 - 如果我删除该行,我会得到这个(这就是我首先遇到这个问题的原因):

$http 不可用

请注意,我注释掉了console.log- 因此doSubmit()调用从不使用$http. 现在 - 当我$http在控制台中调用时 - 它没有定义。

0 投票
1 回答
173 浏览

javascript - AngularJS ng-click 功能未达到

当我将新产品添加到产品列表时,它不起作用。所以产品可以很好地加载,但ng-click函数没有被调用。(我在addProduct函数中输入的警报没有执行)。

HTML

任何帮助将不胜感激。

控制器:

0 投票
2 回答
422 浏览

angularjs - 如何在 Angular 控制器之外删除 Cordova 特定事件?

想象一下,我有一个控制器来处理例如视图更改:

但我不仅要处理它,例如使用内部的 HTML 按钮<body>,还要使用设备上的后退按钮。所以我必须为deviceready事件添加事件侦听器,并且还要显式调用$scope.$apply(),以便在 AngularJS 上下文之外调用它,如下所示:

但我也想遵循(相对:))新controllerAs语法,因为现在推荐使用这种方法,例如 Todd Motto:适用于团队的 Opinionated AngularJS 样式指南,它允许在使用或不使用$scope某些东西时从控制器中删除。但是我不能这样做,如果用户单击设备后退按钮时我必须调用,因为我的上下文不是 Angular 上下文。我考虑过创建一个可以作为cordova的包装外观并注入到该服务中,但正如我在这里所读到的:Injecting $scope into an angular service function()这是不可能的。我看到了这个:Angular JS & Phonegap back button event和接受的解决方案还包含这使得$emit$on$apply()Service$scope$apply()$scope不可移动。任何人都知道在 Angular 控制器之外删除 Cordova 特定事件的解决方案,以便$scope在不需要明确需要时从控制器中删除?先感谢您。

0 投票
1 回答
792 浏览

javascript - 带有 ng-repeat 的 ng-show 角度制表符

我已经为此工作了一段时间,无法弄清楚为什么它不起作用。是我试图创建的效果- http://plnkr.co/edit/RAeIwFbn2Zoe9WfLdMX8?p=preview。我希望创建一个标签栏,点击它会显示不同的信息。

这是我到目前为止的代码,但由于某种原因它不起作用:

HTML

JS

我的角度代码看起来像这样。

我已经阅读了各种答案并尝试了很多东西,但我觉得这一定是我想念的愚蠢的东西。任何帮助将不胜感激。

谢谢,保罗