angularjs - AngularJS 文档教程中关于 $controller 服务的问题
问题描述
此代码来自https://docs.angularjs.org/tutorial/step_02。我只是想知道为什么 scope.phones.length 属性是 3 而不是 0,因为 scope 是一个空对象。我不确定这条线在做什么:
var ctrl = $controller('PhoneListController', {$scope: scope});
看起来它将控制器中的 $scope 设置为空范围对象。
describe('PhoneListController', function() {
beforeEach(module('phonecatApp'));
it('should create a `phones` model with 3 phones', inject(function($controller) {
var scope = {};
var ctrl = $controller('PhoneListController', {$scope: scope});
expect(scope.phones.length).toBe(3);
}));
});
解决方案
在这里,您创建具有预定义范围的控制器
var scope = {};
var ctrl = $controller('PhoneListController', {$scope: scope});
当控制器启动时,它的代码如下:
$scope.phones = [...]
因此,当它执行时,它会放入带有 3 个项目的“电话”数组。
您可以尝试使用它并将一些预定义的值放入范围:
var scope = {foo: 'bar', phones: [1,2,3]};
var ctrl = $controller('PhoneListController', {$scope: scope});
phonecatApp.controller('PhoneListController', function PhoneListController($scope) {
console.log(foo) // 'bar'
console.log(phones) // [1,2,3]
$scope.phones = [
{name: 'Nexus S'}
]
console.log(phones) // [{name: 'Nexus S'}] here will be an array what we just defined to this property
推荐阅读
- html - 下拉切换的样式按钮取决于 nav-link 的 RouterLinkActive
- java - RxJava - 如何使用内部“toBlocking”调用测试函数
- python - 从 keras.layers 导入 LayerNormalization 时出错
- kubernetes - 如何为特定目标动态更改普罗米修斯运算符中的scrape_interval
- r - 如何在R中按组对NA行求和
- python - 错误:创建版本失败。检测到错误的模型错误:“加载模型失败:无法加载模型
- javascript - 在 jQuery 的现有下拉列表中添加自动完成搜索
- javascript - 如果数据库中已存在用户,如何使用 Math.random() 将其排除在随机之外
- python - 'RawReactionActionEvent' 对象没有属性 'guild'
- python - discord.py 1.3.2:如何在用户按下表情符号反应时检测和执行代码