Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度指令属性会导致错误_Javascript_Angularjs - Fatal编程技术网

Javascript 角度指令属性会导致错误

Javascript 角度指令属性会导致错误,javascript,angularjs,Javascript,Angularjs,我正在尝试编写一个angular指令来生成传入属性的子字符串。下面是我的代码: HTML: 但这只会导致我在link函数中所做的子字符串被忽略 为什么会出错?Angular没有将引号中的内容视为字符串,而是尝试解析出一些命令吗?最重要的是,我如何解决这个问题 谢谢只需使用@进行文本绑定,其余代码就可以完美工作 工作示例: var-app=angular.module('myapp',[]); 应用程序控制器('MainCtrl',函数($scope){ }); app.directive('s

我正在尝试编写一个angular指令来生成传入属性的子字符串。下面是我的代码:

HTML:

但这只会导致我在link函数中所做的子字符串被忽略

为什么会出错?Angular没有将引号中的内容视为字符串,而是尝试解析出一些命令吗?最重要的是,我如何解决这个问题


谢谢

只需使用
@
进行文本绑定,其余代码就可以完美工作

工作示例:

var-app=angular.module('myapp',[]);
应用程序控制器('MainCtrl',函数($scope){
});
app.directive('substring',function(){
返回{
限制:“AE”,
替换:正确,
范围:{
信息:“@”
},
链接:功能(范围、要素、属性){
//警报(属性消息);
var str=attrs.message;
scope.text=str.substring(1,4);
},
模板:“{text}}”
};
});

JS-Bin

请输入错误。或者,如果有可能,在JSFIDLE或任何其他类似文件上复制错误tool@jcvegan-我一直试图发布错误,但是Stackoverflow阻止了我的问题,说错误是错误的代码格式。你知道这件事吗?你试过用单引号写你的信息吗
message=“‘这也是’”
@Dave您正在使用
attrs.message访问文本。你为什么需要定义新的范围?@cem我不知道你的意思。这是我第一次编写指令(对Angular来说还是新的)。我遵循的例子就是这样做的。我尝试删除自定义范围,但在两个点中仅使用最后一个值的指令时遇到问题。你能详细解释一下你的意思吗?谢谢你的帮助。你能解释一下在指令中使用“@”和“=”的区别吗?我仍然不知道什么时候应该使用其中一种。
<body ng-controller="MainCtrl">
     <div><substring message="This is a test."></substring></div>
     <div><substring message="So is this." ></substring></div>
</body>
var app = angular.module('myapp', []);

app.controller('MainCtrl', function($scope) {

});

app.directive('substring', function () {
return {
    restrict: 'AE',
    replace: true,
    scope: { text: '=message' }, 
    link: function (scope, elem, attrs) {
        //alert(attrs.message); 
        var str = attrs.message;

        scope.text = str.substring(1, 4);
    },
    template: '<H1>{{text}}</H1>'
};
});
'=message' to '@message'