這個問題與Mike的帖子Using ng-model within a directive中的一個問題類似。在指令的jqlite生成的html中使用控制器作用域數據
我正在寫一個小電子表格的頁面,它根據用戶輸入字段顯示計算輸出。使用指令,我在做自定義標籤是這樣的:
<wbcalc item="var1" title="Variable 1" type="input"></wbcalc>
<wbcalc item="var2" title="Variable 2" type="input"></wbcalc>
<wbcalc item="calc" title="Calculation" type="calc"></wbcalc>
的「項目」字段的引用範圍的在我的控制器數據:
$scope.var1 = '5'; // pre-entered input
$scope.var2 = '10'; // pre-entered input
$scope.calc = function() {
return parseInt($scope.var1) + parseInt($scope.var2);
};
和「類型」字段中指令的使用知道是否將該項目視爲字符串或函數的邏輯。
下面是這個小提琴:http://jsfiddle.net/gregsandell/PTkms/3/我可以輸出的元素與代碼的驚人行工作:
html.append(angular.element("<span>")
.html(scope.$eval(attrs.item + "()"))
);
...和我使用的這個讓我輸入連接到我的作用域控制器的數據(我得到這個從Mike's post:
var input = angular.element("<input>").attr("ng-model", attrs.item);
$compile(input)(scope);
html.append(input);
...而它並把值在田間地頭,他們沒有必然的計算,你可以在我的小提琴變化的輸入信號看到
有沒有更好的和/或更直觀的方法來將我的控制器作用域數據鏈接到我的指令中的jqlite生成的html?
許多噸漢克斯,我不知道有關隔離的範圍綁定,並會在那裏讀到。我注意到你選擇將html作爲字符串: template:'
在一個非常簡短的解釋 - Angular有一個叫'編譯'的概念,它基本上把你的模板和鏈接綁定等 - 你需要這樣做,讓雙向綁定工作。按照慣例,這需要你指向一個模板或者模板 - 儘管你可以在結構上建立標記,但你必須跳過這樣做。從jQuery的思維轉變需要一段時間,但一旦你做到了,它是值得的! – 2013-03-04 22:41:51