Javascript 指令与x27之间没有数据绑定;s范围和it';s模板

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', 模板

我有一个简单的指令,它在html模板中包含这个输入元素:

<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';
            });
        }
    };
});