我有了這個代碼(更新)傳遞一種形式的指令:未定義
HTML
<body ng-controller="MainCtrl">
<form name="form" novalidate>
<directive form="form.test" required
><input type="text" ng-model="text" name="test" required="true" /></directive>
<button ng-click="click()">Click me</button>
</form>
</body>
的Javascript
app.controller('MainCtrl', function($scope) {
$scope.click = function(){
console.log('click');
}
});
app.directive('directive', function() {
return {
transclude: true,
replace: true,
scope: {
form: '=',
},
template: '<div>',
link: function(scope, element, attrs, ctrl, transcludeFn) {
var inputDiv = angular.element('<div>')
transcludeFn(scope, function(clone){
inputDiv.append(clone);
})
element.append(inputDiv);
scope.$watch(function(){
return scope.form.$error;
}, function(newValue){
console.log('newValue', newValue);
}, true)
}
}
});
我每次點擊的按鈕,我得到表單的錯誤是未定義的。 這裏試試:http://plnkr.co/edit/pl76wo4AJiGH0m7b5NQd?p=preview
'return scope.form [scope.toWatch]。$ error;'產生錯誤 – Ronnie
我解決了它:我更新了plunk以反映問題。如果您將element.append(inputDiv)函數調用移入transclude函數,它會以某種方式開始工作。 – raichu