В моем приложении я столкнулся с одной проблемой, и я отнес ее к простейшему случаю, как показано ниже.
angularjs: использовать для параметра scope функции link, чтобы получить свойство родительского контроллера
<body ng-controller="MainCtrl">
<input type="text" ng-model="color" placeholder="Enter a color"/>
<input type="text" ng-model="name" placeholder="Enter a name"/>
<hello-world/>
</body>
app.directive('helloWorld',function(){
return{
restrict: 'AE',
replace: true,
template: '<p style="background-color:{{color}}">Hello World</p>',
link: function(scope,elem,attrs){
elem.bind('click',function(){
elem.css('background-color','white');
scope.$apply(function(){
scope.color="white";
});
});
elem.bind('mouseover',function(){
elem.css('cursor','pointer');
console.log(scope.name);
});
}
}
});
В приведенном выше случае, я могу получить name
и color
свойство от контроллера MainCtrl
. Демонстрационная здесь: http://plnkr.co/edit/yrljsddgTtkAo0sZVjgf?p=preview
Но в моем реальном проекте, мое использование около контроллера немного отличается следующим образом:
<body ng-controller="MainCtrl as main">
<input type="text" ng-model="main.color" placeholder="Enter a color"/>
<input type="text" ng-model="main.name" placeholder="Enter a name"/>
<hello-world/>
</body>
Я обычно использую as
метод, как показано выше.
Но в данном случае я не знаю, как получить доступ к свойству в link
функции через scope
arguments.The демо здесь http://plnkr.co/edit/wnnWyRztZTounSyemPze?p=preview
В настоящее время scope.name
не определен.
Значит, любая помощь?
демо ссылка была обновлена –