问题标签 [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 - 使用 controllerAs-Syntax 的回调中的这个引用
我正在开发一个 angularjs 项目,我正在尝试尽可能接近 angularjs 2 来实现它。
在 angularjs 2 中将不再有 ng-controller 和 $scope,所以我使用指令而不是 ng-controller。此外,我试图通过使用 controllerAs 语法来避免使用 $scope。
我的指令看起来像这样:
到目前为止一切正常。当我试图在回调函数中调用控制器上的方法或属性时,问题就开始了。在这种情况下,“this”不再引用实际的控制器实例。
例子:
有没有办法在回调中获取对我的控制器实例的引用,以便我可以在回调中使用控制器方法和属性?
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'}}
) ,效果很好
javascript - Angularjs - 在不使用 $scope 和使用 controllerAs 的情况下访问父控制器
我需要一种方法来访问控制器的父范围,而无需注入 $scope 来这样做。这背后的原因是我正在构建一个 SPA,并且我想根据当前页面将一个类应用于 body 元素。我不想仅仅为了改变类而将 $scope 注入我的每一个控制器。另外请让我知道我是否以错误的方式看待这个问题,是否有办法使用 $routeprovider 或服务来封装此功能。我最近才开始使用 Angular,所以如果解决方案真的很简单,我提前道歉,但我无法通过谷歌搜索找到与我的情况类似的任何东西。
这是基本设置:
索引.html
body.controller.js
联系人.controller.js
app.routes.js
html - 在angularJS中使用带有'controller as'语法的ngRoute
我有以下config
和controllers
当我在index.html
.
由于我不使用$scope
,因此仅编写是{{pageClass}}
行不通的。我怎样才能解决这个问题controller as syntax
?
编辑
我得到了几个很好的答案。如果您想controllerAs
用不同的名称命名您的值,我还发现了另一种方法:hctrl
和 actor
(ctrl
如我上面的代码):
您可以在 html 中执行此操作:
angularjs - 将 ControllerAs 与指令一起使用
我在这里尝试遵循 John Papa 的 angularJS 样式指南,并开始将我的指令切换为使用 controllerAs。但是,这是行不通的。我的模板似乎无法访问分配给 vm 的任何内容。请参阅展示该行为的这个非常简单的 plnkr 示例。
javascript - 使用没有 $scope 的 ControllerAs 语法与服务变量绑定?
我正在熟悉 AngularJS 中的 controllerAs 语法,当我需要对服务变量进行简单绑定时遇到了问题。通常 a $scope.$watch
or$scope.$on
会做,但这将涉及注入$scope
,这似乎违背了控制器的目的。
目前我所拥有的是,在单击其中一个按钮并调用config.setAttribute(attr)
之后,控制器调用服务的setAttribute
功能,但不是getAttribute
,所以config.attribute
永远不会改变。
在我处理这个问题的过程中,有什么我忽略的吗?我需要注入$scope
或更改控制器语法来$scope
代替使用吗?
看法:
服务:
控制器:
javascript - AngularJS ControllerAs 语法和控制器注入变量
我正在写一个指令,并试图坚持John Papa 风格指南。所以我也决定跳上ControllerAs
语法旅行车,我有一个小指令,如下所示:
这是一个时事通讯注册服务。我将不得不做一个 HTTP 请求,因此我将它注入到控制器中。一切都很好 - 但从vm.doSubmit(--formname-here--)
模板调用函数导致我无法找到$http
服务。
所以我的问题是:如何访问$http
从doSubmit()
函数中注入的内容?
编辑
我将包括视图代码 - 但不用担心 - 管道工程:
编辑 2
事实证明,@Tek 是对的——代码有效。我认为我没有看到它的原因是(我认为)Chrome 中的 JS 运行时$http
会在它知道它不会被调用时优化它。
这段代码工作正常。我认为这是因为运行时预先考虑$http
了console.log()
函数调用中的使用。但是 - 如果我删除该行,我会得到这个(这就是我首先遇到这个问题的原因):
请注意,我注释掉了console.log
- 因此doSubmit()
调用从不使用$http
. 现在 - 当我$http
在控制台中调用时 - 它没有定义。
javascript - AngularJS ng-click 功能未达到
当我将新产品添加到产品列表时,它不起作用。所以产品可以很好地加载,但ng-click
函数没有被调用。(我在addProduct
函数中输入的警报没有执行)。
HTML
任何帮助将不胜感激。
控制器:
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
在不需要明确需要时从控制器中删除?先感谢您。
javascript - 带有 ng-repeat 的 ng-show 角度制表符
我已经为此工作了一段时间,无法弄清楚为什么它不起作用。这是我试图创建的效果- http://plnkr.co/edit/RAeIwFbn2Zoe9WfLdMX8?p=preview。我希望创建一个标签栏,点击它会显示不同的信息。
这是我到目前为止的代码,但由于某种原因它不起作用:
HTML
JS
我的角度代码看起来像这样。
我已经阅读了各种答案并尝试了很多东西,但我觉得这一定是我想念的愚蠢的东西。任何帮助将不胜感激。
谢谢,保罗