angularjs - 无法理解 angularjs 组件。之前只使用过指令
问题描述
所以我一直在使用一个控制器一个视图,并且只对我想重复使用的部分使用指令。
现在我要去面试,我被要求了解组件,我从来不知道它存在。我正在尝试用它替换指令,但甚至无法将简单对象从父控制器传递到组件中。
- (第一个问题)我一直在使用 $scope 来做所有事情。现在我正在阅读组件,我看到 $ctrl 到处都在使用,有什么不同?
应用程序.js
var myApp= angular.module('bigMoveApp', ['ngRoute', 'testerModule']);
myApp.config(['$routeProvider', function ($routeProvider) {
$routeProvider.
when('/', {
templateUrl: 'app/Views/main.html',
controller: 'ctrlMain'
}).
otherwise({
redirectTo: '/'
});
}]);
ctrlMain.js
myApp.controller('ctrlMain', ['$scope', function ($scope) {
//code
$scope.paragraphToWrite = { text: "let's write something" };
//code
}])
main.html
<div id="main-body-wrapper">
<...>
<paragraph-Component obj="paragraphToWrite"></paragraph-Component>
<...>
</div>
段落组件.js
function paragraphController($scope, $element, $attrs) {
var ctrl = this;
ctrl.user = $scope.$parent.textFields.whatWeDo.title;
var x = ctrl.obj;
}
myApp.component('paragraphComponent', {
templateUrl: '/app/Views/paragraphCom.html',
bindings: {
obj : '='
},
controller: paragraphController
})
- (第二个问题),我在这里做错了什么,我什至不能将一个简单的对象传递给组件
请帮忙,我需要在今天结束之前把头绕在组件上,昨天我整晚都在读这个,但还是不太明白。我什至不了解组件的好处,当指令可以根据我的理解做更多事情时
解决方案
别担心,这没什么新鲜的。AngularJS 组件 API只是一个指令 API 的包装器。.component
当您使用API时,它会在幕后创建一个指令。引入这些更改是为了使 AngularJS 迁移到 Angular(2+) 版本更顺畅。此外,API 的可读性看起来也很相似,因为 Angular 完全基于component
.
回到你的问题
- 每当您
controllerAs
在定义控制器时使用模式时,所有绑定值都驻留在您的$scope.controllerAlias
变量中。最终,如果您看到别名中的内容,您将看到this
(上下文)完全填充在那里。您不应该$scope
在控制器内部使用,而是所有内容都将驻留在您的控制器功能this
中,这只不过是$ctrl
默认的控制器别名。 您在使用组件名称时出现拼写错误。
paragraph-Component
标签应该是paragraph-component
<paragraph-component obj="paragraphToWrite"></paragraph-component>
推荐阅读
- python - 我如何删除我已经打印的内容,所以我想在几秒钟内向用户显示答案并删除它
- c++ - 获取节点并根据用户的特定输入对它们进行分组
- flutter - 在颤动中滚动列表视图时剪辑填充
- flutter - 每当我的流获得新值时,如何显示对话框?
- kubernetes - 为什么我得到一个空文件?
- python - 无法在 Python 网页抓取中获取文章的链接
- postman - 邮递员模拟服务器呼叫日志为空
- testing - 辅助功能测试(使用 Microsoft 讲述人作为屏幕阅读器)?有人在这里提供一些实用指南吗?
- python - 对为什么生成器有用感到困惑
- firebase - Firebase 中的现收现付定价和免费定价的混淆