這樣就能夠解決您的問題訪問輸入?
我不知道KnockoutJs,但我可以給你的角度1.x的例子。
在View:
<div ng-controller="numberCtrl">
<button type="button" ng-click="plusOne()">Plus One</button><br>
<input type="number" ng-model="inputNumber" />
<button type="button" ng-click="plusInput(inputNumber)">Plus One</button><br>
<p>{{numberPlusOne}}</p><br>
<p>{{numberContainer.plusNumber}}</p><br>
<h1>Above code is parent scope</h1>
<number-panel load-container="numberContainer"></number-panel>
</div>
在控制器:
app.controller('numberCtrl', numberCtrl);
numberCtrl.$inject = ['$scope', ...];
function numberCtrl($scope, ...) {
$scope.inputNumber = 0;
$scope.numberContainer = {
"plusNumber": $scope.inputNumber,
// "minusNumber": null
};
$scope.numberPlusOne = 0;
$scope.plusOne(){
$scope.numberPlusOne ++;
}
$scope.plusInput(num){
$scope.numberPlusOne += num;
}
}
在指令:
.directive('numberPanel', function() {
return {
templateUrl: 'views/template/number.directive.html',
scope: {
loadContainer: '=',
},
replace: true,
restrict: 'EA',
controller: function ($scope, $element, $attrs) {
// here can access $scope.numberContainer through $scope.loadContainer
// also you can create other child functions here
$scope.plusThree = function(){
$scope.loadContainer.plusNumber += 3
}
}
};
});
在number.directive.html
<div>
<h1>Child Scope</h1>
<p>{{ loadContainer.plusNumber }}</p><br>
<button type="button" ng-click="plusThree()">Plus Three</button>
</div>
$rootScope
也是另一種方式來使用跨範圍的對象,但最好不要污染它..
裁判:https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope
計算器:$on and $broadcast in angular
提供角無版本。據我所知,Angular 1仍然很受歡迎。 https://docs.angularjs.org/api/ng/directive/form有你所有的答案。在您的快速示例中,您是否提交了一個表單,它將一個數字作爲輸入,讓控制器添加1,然後將該變量放入範圍中?有點不清楚。 – SirUncleCid
我使用角1 –
我真是一個假設的例子中,我還沒有編碼的呢。 –