Javascript 指令与x27之间没有数据绑定;s范围和it';s模板
我有一个简单的指令,它在html模板中包含这个输入元素:Javascript 指令与x27之间没有数据绑定;s范围和it';s模板,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我有一个简单的指令,它在html模板中包含这个输入元素: <input type="text" placeholder="Search" class="form-control" ng-model="searchValue" ng-keyup="keyup($event, searchValue)"> 我的问题是控制器没有在视图上渲染模型值 看看这个 我仍然不太确定这是否是您想要的: app.directive('test',function(){ 返回{ 限制:'E', 模板
<input type="text" placeholder="Search" class="form-control" ng-model="searchValue" ng-keyup="keyup($event, searchValue)">
我的问题是控制器没有在视图上渲染模型值
看看这个 我仍然不太确定这是否是您想要的:
app.directive('test',function(){
返回{
限制:'E',
模板:{{blarg}},{{searchValue}},
替换:正确,
链接:函数($scope、elem、attrs){
$scope.$watch('searchValue',函数(n,o){
如果(n==o){
返回;
}
$scope.blarg=n+'fooo';
});
}
};
});
因此,基本上,与其监听keyup事件并将searchValue传递给侦听器,不如直接观察它
我删除了选项上的$watched,因为它在那里什么都没做。我不确定你在问什么。。。您是否希望看到$scope.message在某处呈现?@coma,查看scope的
blarg
值(第21行)它不会更改视图(在模板中搜索{{blarg}}
)。啊,好的,您正在谈论链接函数…@coma,那么您能指出问题吗?您刚刚从(2012!)中派生了一个JSFIDLE吗,它使用的是Angular 1.0.0。为什么我需要使用手表?为什么范围和视图之间没有双向数据绑定?更多信息,我需要知道按下了哪个键,为此我需要事件。这里我更新了fiddle,它正在工作。你能解释一下原因吗?此外,我还需要观察传递给Directive的options对象。您最初的JSFIDLE使用的是1.0.0,我确信使用ng keyup时存在问题,与之相比,第一个使用的是1.2。在我的项目中,我使用的是1.3,在调试时,我使用的是keyup函数,但searchValue始终是空字符串
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);
}
}
});
}
}
}]);
});
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';
});
}
};
});