我想创建一个动态的指令。在此指令中,定义具有input元素的模板。实际上,此元素ng-model
必须是动态的,并在控制器中使用$scope.name
。
app.directive('helloWorld', function() {
return {
restrict: 'E',
replace: true,
scope: {
name: '@',
path:'@',
},
template: '<input\
type="text"\
name="{{name}}"\
ng-model="{{name}}"\
/>\,
link: function(scope, elem, attrs) {
},
controller:{
$scope.$watch($scope.name, function (newValue, oldValue) {
}
}
});
答案 0 :(得分:0)
首先,你的指令语法是错误的,这是正确的:
app.directive('helloWorld', function() {
return {
restrict: 'E',
scope: {
name: '@',
path:'@',
},
template: '<input type="text" name="{{name}}" ng-model="name">',
link: function(scope, elem, attrs) {
},
controller: function($scope) {
$scope.name = 'asd';
$scope.$watch('name', function (newValue, oldValue) {
})
}
}
});
其次,如果您希望拥有动态model
,则应使用scope: {name: '='}
作为@
进行一次性绑定
将模板中的name="name
更改为name="{{name}}"
答案 1 :(得分:0)
<强>代码强>
var app = angular.module('app',[])
app.directive('helloWorld', function() {
return {
restrict: 'E',
scope: {
name: '@',
path:'@',
},
template: '<input type="text" name="{{name}}" ng-model="name"/> {{name}}',
controller: function($scope) {
$scope.name = "initial value";
$scope.$watch('name', function (newValue, oldValue) {
console.log("newValue: ",newValue);
})
}
} });