angular.module('sandbox.directive.controllers', [])
.directive('simpleDirective', function() {
return {
restrict: 'E',
replace: true,
scope: {user: '='},
controller: 'simpleController',
templateUrl: 'directive-controllers/templates/simpleDirective.html'
};
})
.controller('simpleController', function($scope, $element) {
$scope.title = "Hello from the controller!";
});
it('should allow us update when we change the title', function() {
element.scope().title = "Marco Polo!";
element.scope().$digest();
expect(element.html()).toContain('Marco Polo!');
});
我目前正在努力更好地了解指令范围。我写了一些测试,很清楚地说明了大多数用例。但是,我遇到的问题是指令控制器如何与隔离范围相关。
我的理解是控制器中可访问的范围是对范围指令的引用。
我理解基元上的双向绑定问题,但这是在隔离范围内而不是父范围。任何有助于更好地理解这一点的帮助都将受到赞赏。
答案 0 :(得分:0)
似乎有一个element.isolateScope()属性。
为用户分配的双向绑定是在从element.scope()返回父作用域时传递的,因此当用户更改时,绑定有效并且值已在隔离范围内更新。
element.isolateScope()在隔离时(就像在这种情况下一样)返回范围,并允许我正确更新此值。
解释了element.scope()和element.isolateScope()函数here。