我有以下示例:
HTML:
<body ng-controller="MainCtrl">
<p>Hello {{name}}!</p>
<p>Result is {{result}}!</p>
<output-content data="name"></output-content>
</body>
JavaScript的:
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.name = 'World';
$scope.result = "no";
$scope.changeLabel = function() {
$scope.result = 'yes';
}
});
app.directive('outputContent', function() {
return {
restrict: 'E',
replace: true,
templateUrl: 'outputContent.html',
scope: {
data: '=',
result: '='
},
controller: 'MainCtrl'
};
});
outpuContent.html:
<div>
{{data}}
<button ng-click="changeLabel()">Change</button>
</div>
Plunker是:http://plnkr.co/edit/uzSrGcyQLeRNEIH7IXBf
当我点击“更改”按钮时,我希望结果为“是”。
它不起作用。
您能否请您解释如何编写指令?
问候。
答案 0 :(得分:3)
您可以在指令范围内定义变量,但不要传递它。刚过去 &#34;导致&#34;成指令。 E.g:
<output-content data="name" result="result"></output-content>
我把你的傻瓜分开了:http://plnkr.co/edit/12FXjUsVdPXhPIQ1mlHt?p=preview
希望它有所帮助。
答案 1 :(得分:2)
在指令中,删除范围。现在像这样......这将是有效的..
app.directive('outputContent', function() {
return {
restrict: 'E',
replace: true,
templateUrl: 'outputContent.html',
controller: 'MainCtrl'
};
});
答案 2 :(得分:1)
不需要范围。请删除范围。
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.name = 'World';
$scope.result = "no";
$scope.changeLabel = function() {
$scope.result = 'oh yeah';
}
});
app.directive('outputContent', function() {
return {
restrict: 'E',
replace: true,
templateUrl: 'outputContent.html',
controller: 'MainCtrl'
};
});