我有一个简单的指令,其中包含此输入元素的html模板:
<input type="text" placeholder="Search" class="form-control" ng-model="searchValue" ng-keyup="keyup($event, searchValue)">
这是指令js文件:
define(['angular', 'module'], function (angular, module) {
'use strict';
var templateUrl = module.uri.replace('.js', '.html');
angular.module('App.directives')
.directive('navBar',[function() {
return {
scope: {
options: '=options'
},
restrict: 'E',
replace: 'true',
templateUrl: templateUrl,
link: function($scope, elem, attrs) {
$scope.$watch('options', function (val) {
var options = $scope.options || {};
if(options.search) {
$scope.searchValue = options.search.initValue || '';
$scope.keyup = function(e, value) {
options.search.onSearch(e, value);
}
}
});
}
}
}]);
});
我的问题是控制器没有在视图上呈现模型值。
看看这个fiddle。
答案 0 :(得分:1)
我还不太确定这是不是你要找的东西:
http://jsfiddle.net/coma/8d5fj8Lo/2/
app.directive('test', function () {
return {
restrict: 'E',
template: '<div><input type="text" placeholder="Search" class="form-control" ng-model="searchValue"><span>{{blarg}}, {{searchValue}}</span></div>',
replace: true,
link: function ($scope, elem, attrs) {
$scope.$watch('searchValue', function (n, o) {
if (n === o) {
return;
}
$scope.blarg = n + 'fooo';
});
}
};
});
所以基本上,不是监听keyup事件并将searchValue传递给监听器,而只是观看它。
我删除了选项中的$,因为它在那里什么也没做。