【发布时间】:2017-03-17 03:14:41
【问题描述】:
我需要退后一步,了解控制器到指令、指令到控制器以及指令中的内联模板与模板 url 之间的数据流。
我使用内联模板和 templateUrl 创建了 customDirective,用于测试目的。我在控制器的作用域(obj.prop= "Germany", name.firstname= "Gotze", originalBill="$20")中附加了几个值,并将更改指令中的值并再添加一个(obj.prop= "USA", name.firstname= "Tom", originalBill= not changed, bill="4000", applyTest="New Value")。所以我希望内联或 url 模板显示指令中的值并保留控制器中未更改的值。
索引
<pass-object obj="obj" name="name" bill="bill" originalBill="originalBill" applyTest="applyTest"></pass-object>
自定义指令
app.directive('passObject', function() {
return {
restrict: 'AE',
scope: {
obj: '=',
name:'=',
bill:'=',
applyTest:'='
},
templateUrl:'./customDirective.html',
/* template: `<div style="color:brown">
=====Directive Inline Template===== <br/>
Country Name : {{obj.prop}}! <br/>
Person Name: {{name.firstname}} <br/>
Original money : {{originalBill}} <br/>
Bill Money: {{bill}} <br/>
Testing Apply: {{applyTest}} <br/>
Two Way Binding: <input type="text" ng-model="obj.prop" ng-model="name.firstname"/>
</div>`,
*/
link: function(scope, element, attrs){
scope.name = { firstname: "Tom" };
scope.obj = { prop: "USA" };
scope.bill="$4000";
scope.$apply(function() {
scope.applyTest= " New Value";
});
}
};
});
问题/困惑(检查 plunker):
1.使用templateUrl时,为什么obj.prop,name.firstname没有从指令改变,而索引页的值从指令改变?
2.当您在索引和内联html中使用内联模板时,会反映来自obj.prop、name.firstname的指令的正确值;但是originalBill 没有得到价值?
3. 为什么我不能从作用域中检索到applyTest 值?
【问题讨论】:
标签: angularjs angularjs-directive angularjs-scope angularjs-controller